一个不在我控制范围内的 api 端点返回 json,其中包含可以具有 2 种类型之一的关键人员。
JSON:
{
"people":{
"admin":{
"Name": "John Smith",
"Address": "123 main street"
},
"user":{
"Name": "Jane Doe",
"Address": "321 broad street",
}
}
Json 类型 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"`
}
有没有一种方法可以设计一个结构,以便我可以解码任何一种响应?
最佳答案
我会将 people
解码为 map ,然后进行类型断言以确定它是数组还是对象。
关于json - Go Unmarshal json,其键可以是两种类型之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34073844/