当前位置: 首页 > 知识库问答 >
问题:

如何将动态JSON响应映射到GO结构?[重复]

干弘深
2023-03-14

我是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
  }
]

您可以看到每个元素都有一个键“数据”和“类型”(必须),但不同的“类型”会带来不同的“数据”字段。

你能建议一种有效的方法来构建这种对Golang结构的响应吗?

谢谢你。

共有1个答案

潘佐
2023-03-14

这应该对你有用

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

由于唯一的可变键和值位于 Data 中,因此将其制作为映射,并根据收到的类型查找其中的键

 类似资料:
  • 我正在开发一个使用Go的网站,并将其连接到弹性搜索。在弹性搜索中,我可以为索引类型设置动态字段。当我从弹性搜索中读取文档时,它将返回一个JSON对象作为结果,该对象可以包括具有动态名称的字段(或用户定义的字段)。 我可以获取JSON结果并将其解组到Go结构中,但我不知道将这些动态字段作为Go结构的一部分的最佳方法是什么。 这就是我正在做的。例如,如果我从弹性搜索中获得一个联系人的文档,它可能看起来

  • 问题内容: 我正在一个项目中使用JSON作为创建Java对象的配置框架。这也是我来自CF / PHP / JS等方面多年经验的第一个专业Java项目。 在将JSON转换为Java时,我能找到的所有资源都基于以下想法:您必须先在Java中手动构建对象,即POJO,然后使用JSON进行填充。 作为网络语言的资深人士,我对此想法感到窒息。我发现编译后的语言起着不同的作用,但是我认为从命令行到机器语言的共

  • 问题内容: 我正在从syscall到Go中的某些WinApi获得结果。我可以轻松地从C代码映射简单的结构,但是如何处理如下的C结构? 如果在Go中定义了所有可能的类型 在将这个Go结构作为参数进行系统调用之后,我已经将它存储在内存中并且可以像往常一样在Go中访问它,但是(在上面的代码中)仅始终填充(在上面的代码中)之后的第一个字段,其他两个字段始终为空。我知道这是C语言中的预期行为,因为一次只能有

  • 我从消防队拿到了我的文件。目前我在列表中有以下内容: 然后,在下面的方法中,我转换这个列表以放入一个具有所需格式的地图。

  • 问题内容: 我在了解如何实现这一目标方面遇到了问题。 基本上我们有一个API,用户发送以下格式的JSON :(如果代码不完美,请原谅,但您可以理解) 好的,我不确定我是否正确设置了JSON格式,但是现在这是我的问题。 我有一个带有参数Name,Last的类,还有一个作为其成员之一的对象Client和Property Date。 像这样: 因此,基本上,我不确定如何获取JSON,然后将其映射到我的对