为了账号安全,请及时绑定邮箱和手机立即绑定

Unmarshall JSON 上的空结构且密钥未知

Unmarshall JSON 上的空结构且密钥未知

Go
浮云间 2023-08-07 15:21:47
我从 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上的示例。



查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信