【问题标题】:How to unmarshal with different types of the same variable [duplicate]如何用不同类型的相同变量解组[重复]
【发布时间】:2023-03-13 18:50:01
【问题描述】:

我正在使用可能输出的 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{}
  • ...example

标签: json go go-http


【解决方案1】:

由于“value”键的值似乎可以是任何类型,因此您应该为此字段使用类型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

【讨论】:

    【解决方案2】:
    type Template []struct {
        ContactID   int    `json:"contactId"`
        Email       string `json:"email"`
        MarkerName  string `json:"markerName"`
        DataType    string `json:"dataType"`
        Value       string `json:"value"`
        DateEntered string `json:"dateEntered"`
    }
    

    或者

    type Template []struct {
        ContactID   int    `json:"contactId"`
        Email       string `json:"email"`
        MarkerName  string `json:"markerName"`
        DataType    string `json:"dataType"`
        Value       bool   `json:"value"`
        DateEntered string `json:"dateEntered"`
    }
    

    【讨论】:

      猜你喜欢
      • 2010-10-30
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多