当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?
Posted
技术标签:
【中文标题】当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?【英文标题】:How do you unmarshal a JSON object to a Golang struct when the JSON field key is a date? 【发布时间】:2021-09-21 23:39:49 【问题描述】:我有以下 JSON 响应。将其解组为 Golang 结构的最佳方法是什么? JSON to Golang 自动生成的结构是说结构的命名属性应该是 20210712、20210711、20210710 等,但这不起作用,因为随着未来日期的变化,结构字段会有所不同。动态执行此操作的最佳方法是什么?
"data":
"2021-07-12":
"Neutral": 3,
"Positive": 4,
"Negative": 4
,
"2021-07-11":
"Neutral": 0,
"Positive": 1,
"Negative": 4
,
"2021-07-10":
"Neutral": 0,
"Positive": 0,
"Negative": 3
【问题讨论】:
【参考方案1】:根据 Burak Serdar 的输入,我为您的场景创建了一个简单的程序,如下所示:
package main
import (
"encoding/json"
"fmt"
)
type Item struct
Neutral int
Positive int
Negative int
type Data struct
Data map[string]Item `json:"data"`
func main()
var resData Data
var data = []byte(`
"data":
"2021-07-12":
"Neutral":3,
"Positive":4,
"Negative":4
,
"2021-07-11":
"Neutral":0,
"Positive":1,
"Negative":4
,
"2021-07-10":
"Neutral":0,
"Positive":0,
"Negative":3
`)
if err := json.Unmarshal(data, &resData); err != nil
panic(err)
fmt.Println(resData)
fmt.Println(resData.Data["2021-07-10"])
输出:
map[2021-07-10:0 0 3 2021-07-11:0 1 4 2021-07-12:3 4 4]
0 0 3
【讨论】:
【参考方案2】:您可以使用地图:
type Item struct
Neutral int
Positive int
Negative int
type Data struct
Data map[string]Item `json:"data"`
解组时,可以使用data.Data["2021-07-11"]
【讨论】:
以上是关于当 JSON 字段键是日期时,如何将 JSON 对象解组为 Golang 结构?的主要内容,如果未能解决你的问题,请参考以下文章
vega-lite:如何将 JSON 中的日期指定为包含年、月和日数的单独字段?
当 MySql 不支持 json 索引时,Javers 如何处理对 json 值字段的频繁查询?
JAVA,当某个json数据中一个字段与另一个json数据中的字段值相同时,对两个json进行合并且相加,