修复嵌套对象json tag设置错误问题
This commit is contained in:
parent
d139b409fd
commit
141a376d19
@ -1,12 +1,13 @@
|
|||||||
package dynamicstruct
|
package dynamicstruct
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"git.zhangdeman.cn/zhangdeman/wrapper"
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const tagTpl = `json:"{TAG_NAME}" xml:"{TAG_NAME}" toml:"{TAG_NAME}" yaml:"{TAG_NAME}" ini:"{TAG_NAME}"`
|
||||||
|
|
||||||
type nestedStruct struct {
|
type nestedStruct struct {
|
||||||
Field string
|
Field string
|
||||||
Builder IBuilder
|
Builder IBuilder
|
||||||
@ -69,7 +70,7 @@ func (b *builderImpl) AddField(name string, pkg string, typ any, tag string, ano
|
|||||||
if len(tag) == 0 {
|
if len(tag) == 0 {
|
||||||
arr := strings.Split(strings.TrimSuffix(name, ".[]"), ".")
|
arr := strings.Split(strings.TrimSuffix(name, ".[]"), ".")
|
||||||
// 没指定tag, 字段名称作为tag名称
|
// 没指定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)
|
// 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], ".")
|
parentName := strings.Join(nameArr[:i], ".")
|
||||||
parentJsonTag := nameArr[i-1]
|
parentJsonTag := nameArr[i-1]
|
||||||
parentFieldName := wrapper.String(parentJsonTag).SnakeCaseToCamel()
|
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 {
|
if tagCfg, exist := b.structTagTable[parentName]; exist && len(tagCfg) > 0 {
|
||||||
fieldTag = tagCfg
|
fieldTag = tagCfg
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user