json - 处理两种形式的 JSON?

标签 json go

我正在用 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/

相关文章:

go - 使用 Go gRPC 为点对点连接指定截止日期。

amazon-web-services - 我可以在 Glog 中设置全局日志记录级别吗?

json - 如何使用 Alamofire 恢复活力

python - python hash函数等效

c++ - 在 Arduino IDE 上导入库时出错

java - 使用未知 key 反序列化 JSON

sql - PostgreSQL "?"参数占位符不适用于 "WITH"

pointers - 在结构中初始化字符串指针

json - JSONException错误Grails

jquery - 在 $.getJSON 中使用 $.each()