如何解组同一个变量的不同类型

时间:2019-03-17 21:00:18

标签: 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解组到其数组?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

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"`
}