去Unmarshall json,其键可以是两种类型之一

时间:2015-12-03 18:48:20

标签: json go

api端点,不在我的控制范围内,返回json,其中一个关键人物可以有两种类型之一。

JSON:

{
    "people":{
       "admin":{
           "Name": "John Smith",
           "Address": "123 main street"
        },
       "user":{
           "Name": "Jane Doe",
           "Address": "321 broad street",
       }
}

Json type 2:

{
    "people":[
        {
            "name": "Jon Snow",
            "pet": "Ghost"
        },
        {
            "name": "Sansa Stark",
            "pet": "Lady",
        }
    ]
}

对于第一种类型,我可以创建一个结构

type People struct {
   Admin *Person `json:"admin,omitempty"`
   User  *Person `json:"user,omitempty"`
}

type Person struct {
   Name string `json:"name,omitempty"`
   Address string `json:"adress,omitempty"`
}

或第二种类型

type People []*Person
type Person struct{
    Name string `json:"name,omitempty"`
    Pet  string `json:"pet,omitempty"`
}

有没有办法设计单个结构,以便我可以解组任何类型的响应?

1 个答案:

答案 0 :(得分:0)

我将people解码为地图然后键入断言以确定它是数组还是对象。