修复嵌套对象json tag设置错误问题
This commit is contained in:
parent
d139b409fd
commit
141a376d19
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user