我從 API 獲取如下 JSON:{ "unknownkey" : { "sum" : 7030.76636, "low" : 6787.05692, "avg" : 0.00014 }}第一個(gè)鍵是未知的 - 它會(huì)改變,但內(nèi)部結(jié)構(gòu)始終保留相同的鍵。根據(jù)這里的討論,我創(chuàng)建了這些structs:type Order struct { Result Result `json:"-"`}type Result struct { Sum float64 `json:"sum"` Low float64 `json:"low"` Avg float64 `json:"avg"`}我嘗試像這樣解組它:var order Orderjson.Unmarshal([]byte(body), &order)但我只是得到一個(gè)空結(jié)構(gòu):{Result:{Sum:0 Low:0 Avg:0}}
1 回答

慕絲7291255
TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
Result您可以使用值類(lèi)型為或 的映射*Result:
var wrapper map[string]Result
if err := json.Unmarshal([]byte(body), &wrapper); err != nil {
panic(err)
}
fmt.Printf("%+v\n", wrapper)
這將導(dǎo)致:
map[unknownkey:{Sum:7030.76636 Low:6787.05692 Avg:0.00014}]
如果您需要該Result對(duì)象,請(qǐng)?jiān)诘貓D上范圍:
for key, result := range wrapper {
fmt.Printf("Key: %q, Result: %+v", key, result)
}
這輸出:
Key: "unknownkey", Result: {Sum:7030.76636 Low:6787.05692 Avg:0.00014}
嘗試Go Playground上的示例。
- 1 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報(bào)
0/150
提交
取消