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

Go中如何解析字段名为值的JSON?

Go中如何解析字段名为值的JSON?

Go
GCT1015 2023-07-31 17:19:55
我从服务收到具有此格式的 JSON。{    "result": {        "bn05deh7jsm86gtlg2l0C": [            {                "index_name": "BASE",                "index_value": 4081512,                "timestamp": "2019-11-05T13:20:00Z",                "op_id": "A0000000001"            },            ...        ],        "bn05deh7jsm86gtlg2lgC": [            {                "index_name": "BASE",                "index_value": 4728633,                "timestamp": "2019-11-05T13:20:00Z",                "op_id": "A0000000001"            },            ...        ],        ...    }}我需要的是将其转换为像 []Measure 这样的对象数组:type Measure struct {    IndexName    string    `json:"index_name"`    IndexValue   uint32    `json:"index_value"`    Timestamp    time.Time `json:"timestamp"`    OperationID  string    `json:"op_id"`    Guid         string    `json:"guid"`}哪里Guid应该有价值bn05deh7jsm86gtlg2l0C,bn05deh7jsm86gtlg2lgC等等。这是我的代码:url := "https://myurl.com"req, err := http.NewRequest("GET", url, nil)if req != nil {    req.Header.Set("Content-Type", "application/json")}resp, err := client.Do(req)if err != nil {    log.Println(err)    return nil}var measures []Measureerr = json.NewDecoder(resp.Body).Decode(&measures)if err != nil {    log.Println(err)}我怎样才能做到这一点?
查看完整描述

2 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

解码为与数据结构匹配的类型:


var d struct{ Result map[string][]Measure }

err = json.NewDecoder(resp.Body).Decode(&d)

将该数据转换为所需的结果:


var measures []Measure

for k, vs := range d.Result {

    for _, v := range vs {

        v.Guid = k

        measures = append(measures, v)

    }

}

在操场上跑起来


查看完整回答
反对 回复 2023-07-31
?
Helenr

TA贡献1780条经验 获得超3个赞

您不能使用纯编码/json 来执行此操作。Marstall 进入地图[string]测量



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

添加回答

举报

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