修复嵌套对象json tag设置错误问题

This commit is contained in:
白茶清欢 2025-04-29 14:57:15 +08:00
parent d139b409fd
commit 141a376d19

View File

@ -1,12 +1,13 @@
package dynamicstruct
import (
"fmt"
"git.zhangdeman.cn/zhangdeman/wrapper"
"reflect"
"strings"
)
const tagTpl = `json:"{TAG_NAME}" xml:"{TAG_NAME}" toml:"{TAG_NAME}" yaml:"{TAG_NAME}" ini:"{TAG_NAME}"`
type nestedStruct struct {
Field string
Builder IBuilder
@ -69,7 +70,7 @@ func (b *builderImpl) AddField(name string, pkg string, typ any, tag string, ano
if len(tag) == 0 {
arr := strings.Split(strings.TrimSuffix(name, ".[]"), ".")
// 没指定tag, 字段名称作为tag名称
tag = strings.ReplaceAll(`json:"{TAG_NAME}" xml:"{TAG_NAME}" toml:"{TAG_NAME}" yaml:"{TAG_NAME}" ini:"{TAG_NAME}"`, "{TAG_NAME}", arr[len(arr)-1])
tag = strings.ReplaceAll(tagTpl, "{TAG_NAME}", arr[len(arr)-1])
// tag = fmt.Sprintf(`json:"%s"`, name)
}
}
@ -121,7 +122,8 @@ func (b *builderImpl) addNestedField(nameArr []string, pkg string, typ any, tag
parentName := strings.Join(nameArr[:i], ".")
parentJsonTag := nameArr[i-1]
parentFieldName := wrapper.String(parentJsonTag).SnakeCaseToCamel()
fieldTag := fmt.Sprintf(`json:"%s"`, parentJsonTag)
// fieldTag := fmt.Sprintf(`json:"%s"`, parentJsonTag)
fieldTag := strings.ReplaceAll(tagTpl, "{TAG_NAME}", parentJsonTag)
if tagCfg, exist := b.structTagTable[parentName]; exist && len(tagCfg) > 0 {
fieldTag = tagCfg
}