在golang中迭代列表json对象

我有这段代码可以读取 JSON 对象。我需要轻松地遍历“outputs”/data/concepts 键中的所有元素。


有更好的方法吗?


另外,如何访问值的属性:value.app_id、value.id..etc


代码:


package main


import (

    "encoding/json"

    "fmt"

)


var jsonBytes = []byte(`

{"outputs": [{

          "data": {"concepts": 

                                 [{"app_id": "main",

                                     "id": "ai_GTvMbVGh",

                                     "name": "ancient",

                                     "value": 0.99875855}]

              }}

              ],

 "status": {"code": 10000, "description": "Ok"}}`)



func main() {

    var output map[string]interface{}

    err := json.Unmarshal([]byte(jsonBytes), &output)

    if err != nil {

        print(err)

    }

    for _, value := range output["outputs"].([]interface{}) {

        //fmt.Println(value.(map[string]interface{})["data"].(map[string]interface{})["concepts"]).([]interface{})

        //fmt.Println(value.(map[string]interface{})["data"].(map[string]interface{})["concepts"])

        for _, value := range value.(map[string]interface{})["data"].(map[string]interface{})["concepts"].([]interface{}){

            fmt.Println(value)

        }

    }

    //fmt.Printf("%+v\n", output)

}


PIPIONE
浏览 129回答 1
1回答

MMTTMM

最好的方法是将 JSON 解组为结构并迭代值,func main() {        var output StructNameerr := json.Unmarshal([]byte(jsonBytes), &output)    if err != nil {        print(err)    }    for _, value := range output.Outputs {        for _, val := range value.Data.Concepts {            fmt.Printf("AppId:%s\nID:%s\nname:%s\nvalue:%f", val.AppID, val.ID, val.Name, val.Value)        }    }}type StructName struct {    Outputs []struct {        Data struct {            Concepts []struct {                AppID string  `json:"app_id"`                ID    string  `json:"id"`                Name  string  `json:"name"`                Value float64 `json:"value"`            } `json:"concepts"`        } `json:"data"`    } `json:"outputs"`    Status struct {        Code        int    `json:"code"`        Description string `json:"description"`    } `json:"status"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go