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

我从 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 Order

json.Unmarshal([]byte(body), &order)

但我只是得到一个空结构:


{Result:{Sum:0 Low:0 Avg:0}}


浮云间
浏览 126回答 1
1回答

慕丝7291255

Result您可以使用值类型为或 的映射*Result:var wrapper map[string]Resultif 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上的示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go