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

我从服务收到具有此格式的 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 []Measure

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

if err != nil {

    log.Println(err)

}

我怎样才能做到这一点?


GCT1015
浏览 87回答 2
2回答

慕雪6442864

解码为与数据结构匹配的类型:var d struct{ Result map[string][]Measure }err = json.NewDecoder(resp.Body).Decode(&d)将该数据转换为所需的结果:var measures []Measurefor k, vs := range d.Result {    for _, v := range vs {        v.Guid = k        measures = append(measures, v)    }}在操场上跑起来

Helenr

您不能使用纯编码/json 来执行此操作。Marstall 进入地图[string]测量
打开App,查看更多内容
随时随地看视频慕课网APP