json - Go Unmarshal json,其键可以是两种类型之一

标签 json go

一个不在我控制范围内的 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/

相关文章:

javascript - Node.js nwjs包编译错误: Invalid file descriptor to ICU data

php - jquery - JSON 对象,格式为 <optgroup >,由 AJAX 从 PHP 和 MySQL 返回,在 Select2 中不起作用

android - Qt Android App 无法通过 XMLHttpRequest 连接到互联网

正则表达式在 Go 中不匹配

go - VSCode + Go 不断切换 go.mod 依赖项,设置 root 所有权

go - 使用 GoQuery 获取视频 src 时返回空白

java - 如何使用 jackson 从嵌套的 Json 字符串中获取 2 个值

php - 我只从 android json 中的 mysql 数据库获取最后一个 id

go - CTRL + C 未被捕获

go - Visual Studio代码:转到-重新格式化后,选项卡设置无效