gabs
gabs copied to clipboard
I have a problem after generating array
type H map[string]interface{}
jsonParsed := gabs.New()
jsonParsed.ArrayAppendP("first","array")
jsonParsed.ArrayAppendP("second","array")
jsonParsed.ArrayAppendP("third","array")
jsonParsed.ArrayAppendP(H{
"name":"aaaa",
"url":"bbbbb",
},"data")
for _, child := range jsonParsed.S("array").Children() {
fmt.Println(child.Data().(string))
}
//There is something wrong with this code and it can't be read out
for _, child := range jsonParsed.S("data").Children() {
fmt.Println(child.Data()) //map[name:aaaa url:bbbbb]
fmt.Println(child.Path("name").Data()) //<nil>
fmt.Println(child.S("name").Data()) //<nil>
}
// The following code can be read correctly
jsonParsed2, _ := gabs.ParseJSON([]byte(`{
"array":["first","second","third"],
"data":[{"name":"aaaa","url":"bbbbb"}]
}`))
for _, child := range jsonParsed2.S("data").Children() {
fmt.Println(child.Data()) // map[name:aaaa url:bbbbb]
fmt.Println(child.Path("name").Data()) // aaaa
}
gabs.ParseJSON It can be read correctly later
jsonParsed.ArrayAppendP(H{
"name":"aaaa",
"url":"bbbbb",
},"data")
ArrayAppendP Problems arise
Please thank you
Hey @duolabmeng6, looks like your issue is that gabs doesn't recognize the H
type so it doesn't know how to walk it. This can probably be resolved by attempting a cast within the Children
call, but for now would it be possible to use a vanilla map[string]interface{}
instead of H
?