Json 如何对同一变量的不同类型进行解组

Json 如何对同一变量的不同类型进行解组,json,go,go-http,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@e

我正在使用具有可能输出的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"
 }]
我对“value”有一个问题。一个结构应该是什么样的,它将允许这个JSON解组到它的数组中

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


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

因此,您可以使用以下类型:

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

查看此图。

您可以使
字段具有一种类型的
接口{}
。。。。
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"`
}