gpt4 book ai didi

json - 如何在 Go 中解析奇怪的 JSON

转载 作者:行者123 更新时间:2023-12-01 22:38:08 25 4
gpt4 key购买 nike

我正在尝试解析下面的 json,但很难找到要解码的类型或结构。我对格式没有任何控制权,每次调用返回的股票可能不同,所以我不能有一个名为 AAPL 或 TSLA 的类型。我最终想要一个对象数组/列表,其中包含“引用”部分中的数据。就像是:

type Stock struct {
Symbol string
CompanyName string
latestPrice float64
}

有什么想法吗?
{
"AAPL": {
"quote": {
"symbol": "AAPL",
"companyName": "Apple, Inc.",
"open": 308,
"close": 315.01,
"high": 317.05,
"low": 307.24,
"latestPrice": 315.01,
"marketCap": 1365360443400,
"peRatio": 24.49,
"week52High": 327.85,
"week52Low": 170.27
}
},
"TSLA": {
"quote": {
"symbol": "TSLA",
"companyName": "Tesla, Inc.",
"open": 790.51,
"close": 811.29,
"high": 824,
"low": 785,
"latestPrice": 811.29,
"marketCap": 150389638590,
"peRatio": -963.76,
"week52High": 968.99,
"week52Low": 176.99
}
}
}

最佳答案

首先,您必须导出所有字段,然后您可以使用 map每当事先不知道字段名称时。解码后,您可以在 map 上进行范围并将数据放入您想要的任何其他结构。

type Stock struct {
Symbol string
CompanyName string
LatestPrice float64
}

func main() {
var m map[string]struct{ Quote Stock }
if err := json.Unmarshal(data, &m); err != nil {
panic(err)
}

var list []Stock
for _, v := range m {
list = append(list, v.Quote)
}

fmt.Println(list)
}

https://play.golang.com/p/ZXlrWWWgxvB

关于json - 如何在 Go 中解析奇怪的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61742379/

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