mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 14:48:47 +00:00
Merge pull request #4634 from dozn/patch-1
Use Struct Tags For Embedded (with `using`) Structs When Unmarshalling JSON
This commit is contained in:
@@ -439,7 +439,7 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
|
|||||||
use_field_idx := -1
|
use_field_idx := -1
|
||||||
|
|
||||||
for field, field_idx in fields {
|
for field, field_idx in fields {
|
||||||
tag_value := string(reflect.struct_tag_get(field.tag, "json"))
|
tag_value := reflect.struct_tag_get(field.tag, "json")
|
||||||
json_name, _ := json_name_from_tag_value(tag_value)
|
json_name, _ := json_name_from_tag_value(tag_value)
|
||||||
if key == json_name {
|
if key == json_name {
|
||||||
use_field_idx = field_idx
|
use_field_idx = field_idx
|
||||||
@@ -470,7 +470,7 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if field.name == key {
|
if field.name == key || (field.tag != "" && reflect.struct_tag_get(field.tag, "json") == key) {
|
||||||
offset = field.offset
|
offset = field.offset
|
||||||
type = field.type
|
type = field.type
|
||||||
found = true
|
found = true
|
||||||
|
|||||||
Reference in New Issue
Block a user