我正在尝试在 go 中解析下面的 json,但很难找到要解码的类型或结构。我对格式没有任何控制权,每次调用返回的股票可能不同,所以我不能有一个名为 AAPL 或 TSLA 的类型。我最终想要一个包含“引用”部分中的数据的对象数组/列表。就像是:
type Stock struct {
Symbol string
CompanyName string
latestPrice float64
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
{
"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
}
}
}
Run Code Online (Sandbox Code Playgroud)
首先,您必须导出所有字段,然后map只要预先不知道字段名称,就可以使用 a 。解组后,您可以在地图上进行调整,并将数据放入您想要的任何其他结构中。
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)
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.com/p/ZXlrWWWgxvB
| 归档时间: |
|
| 查看次数: |
113 次 |
| 最近记录: |