duanpi2033
2016-10-06 17:45
浏览 64

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

Hi I have problem with unmarshalling nested JSON arrays. What struct should I create? I want to avoid using interface{} as much as possible, but I really don't know if it is possible in this case.

Json I want to unmarshall:

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

and struct I want to use to unmarshall this:

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

Link to example: https://play.golang.org/p/owuMptNrix

图片转代码服务由CSDN问答提供 功能建议

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

Json我想要 取消编组:

 “ [[[[{{” aaa \“:\” aaa \“}]]]”“ 
   
  
 

和我想用来解组的结构:

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • doukuang1897 2016-10-07 00:24
    已采纳

    Yes the answer is just an slice of slices:

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

    Well thanks to your question I've discovered a bug in this tool I always use it for Json manipulation with Go, it can save you a lot of boring time, also it's better to use ticks `` to represent json strings like here

    点赞 打赏 评论
  • doulianxing4015 2016-10-06 18:03

    The problem here is that you're attempting to use structs to represent the nesting when they're actually arrays. I find the form of the json itself to be quite poor but if you're stuck with it then you have to have a 3d array for the unmarshal, using just that 'nested nested' struct type. Below is link to your play example with some crude modifications to demonstrate the point.

    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_

    点赞 打赏 评论

相关推荐 更多相似问题