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

如何在具有任意键的对象值的JSON之后对Go结构建模?[副本]

越学文
2023-03-14

我正在从我的go程序向API发出http请求。请求正文是一个 JSON 对象,如下所示:

 {
      "data": {
          "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX": { 
              "status": "ok","message":"aaa","details":"bbb"
          },
          "ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ": { 
              "status": "ok","message":"ccc","details":"ddd" 
          }  
     }
}

其中XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

如何定义一个允许该部分接受字符串值的结构?下面是我的结构,我知道它不允许我正确解码JSON:

type ReceiptResult struct {
    Data   ReceiptIDS    `json:"data"`
}

type ReceiptIDS struct {
    ReceiptID struct {
        Status  string `json:"status,omitempty"`
        Message string `json:"message,omitempty"`
        Details string `json:"details,omitempty"`
    }
}

共有1个答案

孔志强
2023-03-14

我看到这里的问题,你的结构是不需要的。

结构应该是这样的

type ReceiptResult struct {
    Data map[string]ReceiptIDS `json:"data"`
}

type ReceiptIDS struct {
    Status  string `json:"status,omitempty"`
    Message string `json:"message,omitempty"`
    Details string `json:"details,omitempty"`
}

操场工作实例:https://play.golang.org/p/EbJ2FhQOLz1

 类似资料:
  • 发现了许多类似的问题(标题),但没有一个解决了我的问题,所以这里是它。 我有一个JSON字符串,其中包含一些已知字段(应该始终存在)以及任意数量的未知/任意字段。 在此示例中,和是已知的字段。和是任意/未知的字段。 未知字段可以具有任何名称(键)和任何值。值类型可以是字符串、布尔值、float64 或 int。 我想要的是找到最简单、最优雅(惯用)的方法来解析这样的消息。 我使用了以下结构: 使用

  • 我正在尝试编写一个能够处理json响应的结构类型,就像这样 由于每次键都不一样…不同的响应可能有或多或少的键,不同的键,正如您可以看到的50x100返回特定大小的多个图像,我如何创建与此匹配的结构? 我可以像这样做: 以及针对特定键的它们的列表。但包含结构的外观如何? 类似于: 可能有效,但我无法列举所有可能的图像大小响应。最后的Image_Urls并不是一个真正的列表。我希望能够将它直接转储到j

  • 问题内容: 我正在尝试编写一个可以处理json响应的结构类型 由于键每次都不相同…不同的响应可能包含或多或少的键,不同的键,如您所见,使用50x100返回特定大小的多个图像,我如何创建与此匹配的结构? 我可以这样: 用于单个项目,以及用于特定键的列表。但是包含的结构看起来如何? 就像是: 可能有效,但我无法列举所有可能的图像尺寸响应。另外,Image_Urls末尾没有真正的列表。我希望能够将其直接

  • 对于使用Java Spring RestTemplate完成的HTTP请求,我得到一个JSON键值对对象的响应,该对象带有动态键,如下所示。 回应: 如何将响应对象映射到POJO或映射? 我使用RestTemplate如下所示。

  • 我正在尝试使用OAS v2定义一个API,它将返回一个有效负载以及一些元数据。 换句话说,对API的响应将是: 有效负载可以是任何内容,并且在不同的场景下会有所不同,唯一的限制是它将是有效的JSON格式。因此,现在,我想将其定义为一个JSON对象,而不定义字段级别的细节。 如何在OAS2/JSON模式中做到这一点? 提前谢谢。

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