【问题标题】:How do I map dynamic JSON response to GO struct? [duplicate]如何将动态 JSON 响应映射到 GO 结构? [复制]
【发布时间】:2018-02-21 16:05:56
【问题描述】:

我是 golang 新手,正在尝试解析来自 Web 服务的一些响应,响应如下所示:

[
  {
    "Data": {
      "KeyA": 1,
      "KeyB": 2
    },
    "Type": 0
  },
  {
    "Data": {
      "KeyX": "ValueX",
      "KeyY": 999
    },
    "Type": 1
  },
  {
    "Data": {
      "Val": 123,
      "Id": "999",
      "Cnt": 100
    },
    "Type": 2
  }
]

您可以看到每个元素都有一个Key“Data”和“Type”(必须),但不同的'Type'会带来不同的'Data'字段。

您能否建议一种高效的方式来构建这种对 Golang 结构的响应?

谢谢。

【问题讨论】:

  • 我使用这个工具来生成一个结构来保存 JSON 响应 - mholt.github.io/json-to-go
  • 谢谢,我试过了,但它只为我生成第一个元素的结构,所以在处理第二个和第三个元素时它会转换失败。

标签: go


【解决方案1】:

这应该适合你

type Test []struct {
    Data map[string]interface{} `json:"Data"`
    Type int `json:"Type"`
}

由于唯一的变量键和值在 Data 中,因此将其改为映射并根据接收到的类型查找其中的键

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 2021-08-25
    • 1970-01-01
    • 2014-04-12
    • 2019-06-23
    • 2018-06-13
    • 2021-11-24
    • 2017-04-11
    • 1970-01-01
    相关资源
    最近更新 更多