gpt4 book ai didi

json - 匹配两个具有不同结构的数组

转载 作者:数据小太阳 更新时间:2023-10-29 03:18:44 24 4
gpt4 key购买 nike

我有以下内容

type Book struct {
Name string
Pages int
}

type Library struct {
Books []Book
}

然后我从一个 api 获取所有书籍并像这样转换它们:

var books []Book
json.Unmarshal(response, &books)

但现在我从另一个 api 收到了另一个 Books 列表,但它们具有不同的属性,这就是为什么我添加一个 MetaData 属性来区分它们。

type Book struct {
Name string
Page int
Metadata MetaData
}

type MetaData struct {
Type string `json:"type"`
Price string `json:"price,omitempty"`
}

然后将两种安排合二为一并以 json 形式返回。

books = append(response.Books, response2.Books...)

然后我添加了 omitempty,这样当它们不出现时,就不会在 json 中显示它们,这工作正常。但是,每次我想添加一个新的字段/属性时,我都必须修改我的 book api 和我上面提到的额外 api。我想知道一个结构是否有可能有多个字段或接受它们而不显示它们以防它们不适用。你肯定说我不能修改相同格式的答案,而且他们都是提供者,这是我无法企及的。这个想法是收集 amab 的答案并只向前线提供一个。

最佳答案

如果你想偷懒:将它们解码为通用类型 map[string]interface{} 的数组而不是 Book 类型。

var books []map[string]interface{}
err := json.Unmarshal(response, &books)

当然,这使得访问具体的图书属性变得更加困难,但这并非不可能。

关于json - 匹配两个具有不同结构的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com