我正在用 Go 编写一个应用程序,它将接收两种形式的 JSON:
示例 1:
{"book_data":{"title":"book-title","page_number":457}}
示例 2:
{"book_data":{"collection":214},"books":{"data":[{"title":"book-title","page_number":457},{"title":"book-title","page_number":354}]}}
我认为我可以创建如下所示的结构并将 JSON 解码到其中:
type Book struct {
Title string `json:"title"`
PageNumber int `json:"page_number"`
}
但这只适用于第一个例子。
如何处理来自这两个示例的 JSON?
最佳答案
您可以先在 json.RawMessage
中部分解码,然后根据解码的有效负载来决定。你也可以在更通用的结构中解码。有点像
type Book struct {
Title string `json:"title"`
PageNumber int `json:"page_number"`
}
type BookShelf struct {
BookData struct {
Book
Collection int `json:"collection"`
} `json:"book_data"`
Books struct {
Data []Book `json:"data"`
} `json:"books"`
}
对我来说,它看起来可读性强、有意义且便于进一步处理。
关于json - 处理两种形式的 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42029567/