我从 API 获取如下 JSON:{ "unknownkey" : { "sum" : 7030.76636, "low" : 6787.05692, "avg" : 0.00014 }}第一个键是未知的 - 它会改变,但内部结构始终保留相同的键。根据这里的讨论,我创建了这些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)但我只是得到一个空结构:{Result:{Sum:0 Low:0 Avg:0}}
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
Result您可以使用值类型为或 的映射*Result:
var wrapper map[string]Result
if err := json.Unmarshal([]byte(body), &wrapper); err != nil {
panic(err)
}
fmt.Printf("%+v\n", wrapper)
这将导致:
map[unknownkey:{Sum:7030.76636 Low:6787.05692 Avg:0.00014}]
如果您需要该Result对象,请在地图上范围:
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 关注
- 125 浏览
添加回答
举报
0/150
提交
取消