aboutsummaryrefslogtreecommitdiff
path: root/core/encoding/json
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2022-09-14 18:21:12 +0100
committergingerBill <bill@gingerbill.org>2022-09-14 18:21:12 +0100
commit28ad4f8623b31e21a8a63ef69aa85a7f070bc20b (patch)
tree12913eb9175da236302df0b03ceb2d630d85ccd6 /core/encoding/json
parenta3c04db82831d8d56e4aa4be7c7de6f53286682c (diff)
Use `json` field tag for `json.marshal`
Diffstat (limited to 'core/encoding/json')
-rw-r--r--core/encoding/json/marshal.odin6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/encoding/json/marshal.odin b/core/encoding/json/marshal.odin
index 8f7749aba..6834acd8a 100644
--- a/core/encoding/json/marshal.odin
+++ b/core/encoding/json/marshal.odin
@@ -302,7 +302,11 @@ marshal_to_writer :: proc(w: io.Writer, v: any, opt: ^Marshal_Options) -> (err:
for name, i in info.names {
opt_write_iteration(w, opt, i) or_return
- opt_write_key(w, opt, name) or_return
+ if json_name := string(reflect.struct_tag_get(info.tags[i], "json")); json_name != "" {
+ opt_write_key(w, opt, json_name) or_return
+ } else {
+ opt_write_key(w, opt, name) or_return
+ }
id := info.types[i].id
data := rawptr(uintptr(v.data) + info.offsets[i])