支持非整齐的list

This commit is contained in:
白茶清欢 2021-03-12 23:28:28 +08:00
parent 5939795603
commit df00e13602
2 changed files with 42 additions and 8 deletions

View File

@ -149,21 +149,54 @@ func (dj *DynamicJSON) buildTpl(root *JSONode, tplList *[]string, valList *[]int
}
} else {
*tplList = append(*tplList, "{")
if len(root.Child) == 0 {
switch val := root.Value.(type) {
case string:
*valList = append(*valList, val)
if root.IsHasLastBrother {
*tplList = append(*tplList, "\"%v\",")
} else {
*tplList = append(*tplList, "\"%v\"")
}
default:
if root.IsHasLastBrother {
*tplList = append(*tplList, "%v,")
} else {
*tplList = append(*tplList, "%v")
}
*valList = append(*valList, root.Value)
}
} else {
*tplList = append(*tplList, "{")
}
}
for _, node := range root.Child {
dj.buildTpl(node, tplList, valList)
}
if root.IsHasLastBrother {
*tplList = append(*tplList, "},")
} else {
if root.IsSlice {
*tplList = append(*tplList, "]")
if !root.IsIndexNode {
if root.IsHasLastBrother {
*tplList = append(*tplList, "},")
} else {
*tplList = append(*tplList, "}")
if root.IsSlice {
*tplList = append(*tplList, "]")
} else {
*tplList = append(*tplList, "}")
}
}
} else {
if len(root.Child) > 0 {
if root.IsHasLastBrother {
*tplList = append(*tplList, "},")
} else {
*tplList = append(*tplList, "}")
}
}
}
return tplList, valList
}

View File

@ -26,5 +26,6 @@ func TestJSON(t *testing.T) {
tree.SetValue("slice.[0].name", "zhang")
tree.SetValue("slice.[1].name", "de")
tree.SetValue("slice.[2].name", "man")
tree.SetValue("slice.[3]", "zhangdeman")
fmt.Println(tree.String())
}