我有以下
title, element_id, id
Baker, 1, 1
Plumber, 1, 2
Baker, 2, 3
Plumber, 2, 4
Plumber, 3, 5
Doctor, 1, 6
然后从api中获取所有书籍,并像这样转换它们:
type Book struct {
Name string
Pages int
}
type Library struct {
Books []Book
}
但是现在我从另一个api收到另一个var books []Book
json.Unmarshal(response, &books)
列表,但是它们具有不同的属性,这就是为什么我添加一个Books
属性来区分它们的原因。
MetaData
然后将这两种安排合而为一,并返回json。
type Book struct {
Name string
Page int
Metadata MetaData
}
type MetaData struct {
Type string `json:"type"`
Price string `json:"price,omitempty"`
}
我添加了books = append(response.Books, response2.Books...)
,这样当它们不出现时,不要在json中显示它们,就可以了。但是,每次我想添加新的字段/属性时,都必须修改我的书api和上面提到的其他api。我想知道结构是否有可能具有多个字段,或者更愿意接受它们,并且在不适用的情况下不显示它们。您必须说我不能修改相同格式的答案,而且它们都是提供者,而且超出了我的能力范围。这样做的目的是收集amabs答案,并只向前传递一个。
答案 0 :(得分:0)
如果您想偷懒,可以将它们解组为通用类型map [string] interface {}的数组,而不是Book类型的数组。
var books []map[string]interface{}
err := json.Unmarshal(response, &books)
当然,这使得更难访问具体的书籍属性,但这并非没有可能。