嵌套JSON golang映射

时间:2018-07-29 23:28:53

标签: json go struct types nested

我找不到像我一样的问题。

我有以下JSON:

{
    result: "true",
        data: [
         { 
          randomName: {
                 val: 2,
                 secval: 0.142412,
                 thirdval: 0.5235325,
          },
          secRandomName: {
                 val: 8,
                 secval: 0.152512,
                 thirdval: 0.6574,
          },
          thiRandomName: {
                 val: 6,
                 secval: 0.4121,
                 thirdval: 0.2123
          },
        }
    ]
}`

如何在golang中创建可与JSON示例一起使用的类型,我已经尝试过类似的事情:

type TheData struct {
Result  string              `json:"result"`
Data    map[string]DataInfo `json:"data"`
}

type DataInfo struct {
Value           int         `json:"val"`
SecondValue     float32     `json:"secval"`
ThirdValue      float32     `json:"thirdval"`
}

但这是错误的。

P.S。对不起,我的英语,希望您能理解。谢谢。

1 个答案:

答案 0 :(得分:1)

那真的代表您的数据吗?这不是有效的JSON。请参见json.org上的描述。特别是,您需要在字符串前后加上引号,并且在对象或数组的最后一个成员之后不应出现逗号。奇怪的是"true"是一个字符串而不是布尔值。既然这显然不是数据的复制/粘贴,那么您确定正确使用了方括号和花括号吗?这些对于答案很重要。

假设您确实做对了...从这些行:

data: [
         { 
          randomName: {

我们可以说data是一个对象数组。如果您要使用方括号,则表示该数组未在数据模型中表示是一个错误。更改数据模型以包括一个切片以捕获JSON数组:

type TheData struct {
    Result string                `json:"result"`
    Data   []map[string]DataInfo `json:"data"`
}