将响应数据处理到 Struc

我是 GO 新手,我正在解决一个我似乎无法解决的问题:


我正在针对目标发出 GET 请求并返回类似于以下的 JSON 响应:


{

   "data":[

      {

         "def":{

            "key":[

               {

                  "id":84,

                  "name":"T1"

               },

               {

                  "id":19,

                  "name":"T2"

               }

            ]

         },

         "id":2,

         "Name":"Test 1"

      },

      {

         "def":{

            "key":[

               {

                  "id":14,

                  "name":"T3"

               },

               {

                  "id":2,

                  "name":"T4"

               }

            ]

         },

         "id":3,

         "Name":"Test 2"

      }

   ]

}

如何获取resp.Body并以可以开始使用数据的方式保存它?


在 Python 中,我可以轻松地执行类似data = resp.json()['data'].


我会在定义结构中做这样的事情吗?


var output Definitions 

json.Unmarshal([]byte(resp.Body), &output)


哈士奇WWW
浏览 97回答 1
1回答

胡子哥哥

尽管不推荐,但您可以将任意 JSON 数据解组为 an interface{},然后将其断言为 a map[string]interface{}:func main() {    input := []byte(inputJSON)    var f interface{}    _ = json.Unmarshal(input, &f)    JSONmap := f.(map[string]interface{})    fmt.Println(JSONmap["data"])}输出:$ go run main.go[map[Name:Test 1 def:map[key:[map[id:84 name:T1] map[id:19 name:T2]]] id:2] map[Name:Test 2 def:map[key:[map[id:14 name:T3] map[id:2 name:T4]]] id:3]]你可以在这里找到一个活生生的例子:https: //play.golang.org/p/vg-9_KgfJXx
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go