【问题标题】:Nested JSON golang maps嵌套的 JSON golang 映射
【发布时间】:2018-07-29 23:28:52
【问题描述】:

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

我有以下 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"`
}

但这是错误的。

附:对不起我的英语,希望你能理解。谢谢。

【问题讨论】:

  • 它应该像 data.Data["randomName"].val = 2
  • 那不是有效的 JSON。请修改您的问题以包含有效的 JSON。
  • 在这个问题中,json应该是无效的,我需要按原样解析它
  • 您不能使用 JSON 解析器来解析非 JSON 的内容。如果您无法获取有效的 JSON,则必须找到将其转换为有效 JSON 的方法,或者编写自己的解析器。
  • 好的,谢谢,只是觉得golang中有一些东西可以解析无效的json

标签: json go struct types nested


【解决方案1】:

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

假设你做对了......从这些方面:

data: [
         { 
          randomName: {

我们可以看出data 是一个对象数组。如果您的意思是方括号,则数组未在数据模型中表示是错误的。更改您的数据模型以包含一个切片以捕获 JSON 数组:

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

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2019-04-02
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    相关资源
    最近更新 更多