diff --git a/builder.go b/builder.go index ad64070..a820fbb 100644 --- a/builder.go +++ b/builder.go @@ -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 }