调试动态数组

This commit is contained in:
2025-03-22 18:50:56 +08:00
parent 850866d6f5
commit 95946c187c
3 changed files with 38 additions and 10 deletions

View File

@ -167,6 +167,10 @@ func (b *builderImpl) addNestedField(nameArr []string, pkg string, typ any, tag
jsonTag := nameArr[i]
fieldName := wrapper.String(jsonTag).SnakeCaseToCamel()
parentName := strings.Join(nameArr[:i], ".")
if strings.HasSuffix(parentName, "."+ArraySplit) {
// 数组部分处理
continue
}
parentJsonTag := nameArr[i-1]
parentFieldName := wrapper.String(parentJsonTag).SnakeCaseToCamel()
fieldTag := fmt.Sprintf(`json:"%s"`, parentJsonTag)
@ -238,8 +242,25 @@ func (b *builderImpl) Build() DynamicStruct {
// 说明是顶层了
b.AddField(builderCfg.Field, "", builderCfg.Builder.Build().New(), builderCfg.Tag, false)
} else {
// (非顶层) 父级结构存在, 将其追加到父级结构中即可, 向前看一步即为父级结构
b.nestedStructTable[strings.Join(parentNameArr[:len(parentNameArr)-1], ".")].Builder.AddField(builderCfg.Field, "", builderCfg.Builder.Build().New(), builderCfg.Tag, false)
loopCnt := 0
buildInstance := builderCfg.Builder.Build()
val := buildInstance.New()
for {
// (非顶层) 父级结构存在, 将其追加到父级结构中即可, 向前看一步即为父级结构
parentName := strings.Join(parentNameArr[:len(parentNameArr)-1-loopCnt], ".")
if strings.HasSuffix(parentName, "."+ArraySplit) {
// 说明父级是数组
loopCnt++
val = reflect.MakeSlice(reflect.SliceOf(reflect.TypeOf(val)), 1, 1).Interface()
fmt.Println(val)
// b.nestedStructTable[parentName].Builder.AddField(builderCfg.Field, "", val, builderCfg.Tag, false)
} else {
// 父级非数组
b.nestedStructTable[parentName].Builder.AddField(builderCfg.Field, "", val, builderCfg.Tag, false)
break
}
}
}
}
}