在Go / Golang中解组嵌套的JSON数组

时间:2016-10-06 17:45:19

标签: arrays json go unmarshalling

嗨,我解组嵌套的JSON数组有问题。我应该创建什么结构? 我希望尽可能避免使用interface{},但我真的不知道在这种情况下是否可行。

Json我想要解组:

"[[[{\"aaa\": \"aaa\"}]]]"

和struct我想用来解组它:

type SomeStructNestedNested struct {
   Aaa string `json:"aaa"`
}
type SomeStructNested struct {
   SomeStructNestedNested []SomeStructNestedNested
}
type SomeStruct struct {
   SomeStructNested []SomeStructNested
}

链接示例: https://play.golang.org/p/owuMptNrix

2 个答案:

答案 0 :(得分:1)

这里的问题是,当他们实际上是数组时,您尝试使用结构来表示嵌套。我发现json本身的形式非常差,但如果你坚持使用它,那么你必须有一个3d数组用于unmarshal,只使用那个嵌套的嵌套'结构类型。下面是您的播放示例的链接,其中包含一些粗略的修改以证明这一点。

type SomeStructNestedNested struct {
    Aaa string `json:"aaa"`
}

jsonString := "[[[{\"aaa\": \"aaa\"}]]]"
d := [][][]SomeStructNestedNested{}
json.Unmarshal([]byte(jsonString), &d)
fmt.Printf("%v", d)

https://play.golang.org/p/88M0_UR_3_

答案 1 :(得分:0)

是的,答案只是一片切片:

type AutoGenerated [][][]struct {
     Aaa string `json:"aaa"`
}

好的,多亏了你的问题,我发现了这个tool中的一个错误我总是用Go来操作Json,它可以为你节省很多无聊的时间,也更好使用ticks``来表示像here

这样的json字符串