gpt4 book ai didi

json - 如何在对象具有字符串键的 Golang 中解码 JSON

转载 作者:IT王子 更新时间:2023-10-29 01:04:10 26 4
gpt4 key购买 nike

我有一些像这样的 JSON:

{
"ABC": {"symbol": "abc", "open": 42},
"DEF": {"symbol": "abc", "open": 42},
"GHI": {"symbol": "abc", "open": 42}
}

而且我不需要 ABC/DEF/GHI 部分,只需要右边的部分。 ABC、DEF 和 GHI 的值在我的代码中属于 entity.Day 类型,看起来像这样:

type Day struct {
Symbol string `json:"symbol" sql:"symbol"`
Date time.Time `json:"date" sql:"date"`
OpenP float64 `json:"open" sql:"open"`
HighP float64 `json:"high" sql:"high"`
LowP float64 `json:"low" sql:"low"`
CloseP float64 `json:"close" sql:"close"`
VolumeP float64 `json:"volume" sql:"volume"`
Label string `json:"label" sql:"-"`
ChangeOverTime float64 `json:"changeOverTime" sql:"change_over_time"`
UnadjustedVolume float64 `json:"unadjustedVolume" sql:"unadjusted_volume"`
Change float64 `json:"change" sql:"change"`
ChangePercent float64 `json:"changePercent" sql:"change_percent"`
VWAP float64 `json:"vwap" sql:"vwap"`
}

还有其他生成 entity.Day 的端点,但这是唯一一个结构如此的端点。我怎样才能将 JSON 解码为一个 entity.Day 数组?

我的第一个想法是做一个中间数据结构:

type previous struct {
tckrs map[string]entity.Day
}

p := previous{tckrs: make(map[string]entity.Day)}
json.Unmarshal(res, &p)

该代码生成一个空结构,json.Unmarshal 返回一个 nil 错误。你能帮帮我吗?

PS - 我四处搜索了很多,找到了类似的答案,还有很多其他人尝试使用 map 方法,尽管这对我不起作用。

最佳答案

您定义的类型 previous 将要求您的 JSON 表示一个对象,该对象具有一个包含 map 的顶级字段。

由于您的 JSON 模型直接映射,您可以使用 map 对其进行解码。

尝试一下:

p := make(map[string]Day)
json.Unmarshal(res, &p)

关于json - 如何在对象具有字符串键的 Golang 中解码 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51296817/

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