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

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

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

Go
慕田峪4524236 2022-06-01 12:20:12
我想在 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”。需要帮忙。提前致谢。
查看完整描述

2 回答

?
翻阅古今

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

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)

   }

}


查看完整回答
反对 回复 2022-06-01
?
喵喔喔

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

请验证您的 json 格式


这可能会解决您的目的。


package main


import (

    "encoding/json"

    "fmt"

)


    func main() {

    Json := `{

"RESPONSE" : {

    "CODE" : "123",

    "NEW_RESPONSE" :{

            "0":{

            "s" : 1,

            "s1" :2,

            "s3": 3 

            }                      

    }

}

}`


// Declared an empty interface

var 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)

    }

}


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

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