Jeffail/gabs

I have a problem after generating array

Opened this issue · 1 comments

        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?