fix: config map with json tag

This commit is contained in:
kevin.wan
2023-03-06 20:27:20 +08:00
committed by Kevin Wan
parent 7d5d7d9085
commit fb7664a764
2 changed files with 73 additions and 21 deletions

View File

@@ -76,7 +76,7 @@ func LoadFromJsonBytes(content []byte, v any) error {
}
var m map[string]any
if err := jsonx.Unmarshal(content, &m); err != nil {
if err = jsonx.Unmarshal(content, &m); err != nil {
return err
}
@@ -239,7 +239,7 @@ func buildStructFieldsInfo(tp reflect.Type) (*fieldInfo, error) {
for i := 0; i < tp.NumField(); i++ {
field := tp.Field(i)
name := field.Name
name := getTagName(field)
lowerCaseName := toLowerCase(name)
ft := mapping.Deref(field.Type)
// flatten anonymous fields
@@ -255,6 +255,14 @@ func buildStructFieldsInfo(tp reflect.Type) (*fieldInfo, error) {
return info, nil
}
func getTagName(field reflect.StructField) string {
if tag, ok := field.Tag.Lookup(jsonTagKey); ok {
return tag
}
return field.Name
}
func mergeFields(prev *fieldInfo, key string, children map[string]*fieldInfo) error {
if len(prev.children) == 0 || len(children) == 0 {
return newConflictKeyError(key)