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

在 Golang 中解析 JSON 数据

在 Golang 中解析 JSON 数据

Go
慕桂英3389331 2022-06-01 16:42:30
在 Go 中,我进行 API 调用并接收回一个 []byte 的完整数据。当我使用 打印出数组时string(res),我可以看到原始 JSON 对象。它看起来像这样:{"success": true, "data": [{"a": 100, "b": 200, "c": 300},{"a": 200, "b": 400, "c": 600}]}我还创建了一个看起来像这样的结构type SomethingCool struct {  A int `json:"a"`  B int `json:"b"`  C int `json:"c"`}在来自 API 的响应中,我只关心data对象中包含的信息。我想要做的是遍历 中的项目data,并为每个对象创建一个新SomethingCool对象。最后,我想返回一个由循环创建的所有结构组成的数组data。我怎样才能做到这一点?
查看完整描述

1 回答

?
ibeautiful

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

为了访问dataJSON 的字段,您需要创建一个类似的结构并将 JSON 有效负载解码到其中。


var incomingJSON struct {

    Data []SomethingCool `json:"data"`

}

当您将 JSON 解组到此结构中时,您应该可以将数据作为SomethingCools 的切片访问。


完整程序:


package main


import (

    "encoding/json"

    "fmt"

)


type SomethingCool struct {

    A int `json:"a"`

    B int `json:"b"`

    C int `json:"c"`

}


func main() {

    var response = []byte(`{"success": true, "data": [{"a": 100, "b": 200, "c": 300},{"a": 200, "b": 400, "c": 600}]}`)

    var incomingJSON struct {

        Data []SomethingCool `json:"data"`

    }

    if err := json.Unmarshal(response, &incomingJSON); err != nil {

        fmt.Println("Error: ", err)

    } else {

        fmt.Println("Data: ", incomingJSON)

    }

}


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

添加回答

举报

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