json - 如何使用不同类型的同一变量进行解码

标签 json go go-http

<分区>

我正在使用具有可能输出的 API:

[
 {
  "contactId": 2,
  "email": "karina.plain@example.com",
  "markerName": "JavascriptEngine",
  "dataType": "String",
  "value": "Carakan",
  "dateEntered": "2013-01-03T14:52:00"
 },
{
  "contactId": 2,
  "email": "karina.plain@example.com",
  "markerName": "HasReadEntireMessage",
  "dataType": "Boolean",
  "value": true,
  "dateEntered": "2013-01-03T18:02:00"
 }]

我对“值”有疑问。结构应该是什么样子,才能让这个 JSON 解码到它的数组?

最佳答案

由于“value”键的值似乎可以是任何类型,因此您应该为该字段使用 interface{} 类型。这是空接口(interface),它匹配任何至少实现零个方法的类型,即任何类型。

所以你可以使用类型:

type Contact struct {
    ContactId   int         `json:"contactId"`
    Email       string      `json:"email"`
    MarkerName  string      `json:"markerName"`
    DataType    string      `json:"dataType"`
    Value       interface{} `json:"value"`
    DateEntered string      `json:"dateEntered"`
}

查看此 working example .

关于json - 如何使用不同类型的同一变量进行解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211878/

相关文章:

json - JQ,如何根据条件算?

java - Angular JS 内容协助 Eclipse 中的 Java 模型/实体

go - 不同的内容类型与httptest和curl

go - 为什么Golang不能下载某些网页?

javascript - 用变量解析 getJson

javascript - 我无法从 jquery ajax 函数返回 JSON 变量

go - 从 slice 中删除选定元素的最佳方法

Go-直径 : how to determine data variable in NewAVP of TGPPUserLocationInfo to get desired value in Wireshark dump

go - 最重要的测试用例

go - 不应通过中间件HTTP测试