登录
首页 >  Golang >  Go问答

将处理响应数据转换为结构体

来源:stackoverflow

时间:2024-03-04 19:39:26 305浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《将处理响应数据转换为结构体》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我是 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)

解决方案


尽管不推荐,您可以 unmarshal arbitrary JSON data 进入 interface{},然后将其断言到 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

以上就是《将处理响应数据转换为结构体》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>