猿问

gloang中的json unmarshal用于复杂的json数据

我想在 golang 中对以下数据进行 json 解组:


{

RESPONSE : {

    CODE : "123"

    NEW_RESPONSE :{

            0:[

                {

                    key1:val1,

                    key2:val2


                },

                {

                    key3:val3,

                    key4:val4

                }

            ]

            1:[

                {

                    key5:val5,

                    key6:val6,

                    key7:val7


                },

                {

                    key31:val31,

                    key42:val42

                }

            ]

            2:{

                key8:val8,

                key9:val9,

                key1-:val10

            }

            3:{}

    }

}

}


我想访问这些数据的每个键。我正在尝试的是


type testData struct{

Code string  `json:"CODE"`

NewResponse  map[string]interface{} `json:"NEW_RESPONSE"`}


type GetData struct{

TestResponse testData `json:"RESPONSE"`}

在此之后,我无法进一步使用“NewResponse”。需要帮忙。提前致谢。


慕田峪4524236
浏览 173回答 2
2回答

翻阅古今

NewResponse您可以使用密钥访问元素:elem:=NewResponse["0"]查看输入文档,elem是一个对象数组。其余代码将使用类型断言:if arr, ok:=elem.([]interface{}); ok {   // arr is a JSON array   objElem:=arr[0].(map[string]interface{})   for key,value:=range objElem {      // key: "key1"      // value: "val1"      val:=value.(string)      ...   }} else if obj, ok:=elem.(map[string]interface{}); ok {   // obj is a JSON object   for key, val:=range obj {      // key: "key1"      value:=val.(string)   }}

喵喔喔

请验证您的 json 格式这可能会解决您的目的。package mainimport (    "encoding/json"    "fmt")    func main() {    Json := `{"RESPONSE" : {    "CODE" : "123",    "NEW_RESPONSE" :{            "0":{            "s" : 1,            "s1" :2,            "s3": 3             }                          }}}`// Declared an empty interfacevar result map[string]interface{}// Unmarshal or Decode the JSON to the interface.err := json.Unmarshal([]byte(Json), &result)    if err != nil{      fmt.Println("Err : ",err)}else{fmt.Println(result)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答