|
@@ -343,6 +343,15 @@ unmarshal_expect_token :: proc(p: ^Parser, kind: Token_Kind, loc := #caller_loca
|
|
return prev
|
|
return prev
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+@(private)
|
|
|
|
+json_name_from_tag_value :: proc(value: string) -> (json_name: string) {
|
|
|
|
+ json_name = value
|
|
|
|
+ if comma_index := strings.index_byte(json_name, ','); comma_index >= 0 {
|
|
|
|
+ json_name = json_name[:comma_index]
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
|
|
@(private)
|
|
@(private)
|
|
unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unmarshal_Error) {
|
|
unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unmarshal_Error) {
|
|
@@ -384,7 +393,7 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm
|
|
|
|
|
|
for field, field_idx in fields {
|
|
for field, field_idx in fields {
|
|
tag_value := string(reflect.struct_tag_get(field.tag, "json"))
|
|
tag_value := string(reflect.struct_tag_get(field.tag, "json"))
|
|
- if key == tag_value {
|
|
|
|
|
|
+ if key == json_name_from_tag_value(tag_value) {
|
|
use_field_idx = field_idx
|
|
use_field_idx = field_idx
|
|
break
|
|
break
|
|
}
|
|
}
|