猿问

在 Golang 中解析 JSON 数据

在 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。我怎样才能做到这一点?


慕桂英3389331
浏览 78回答 1
1回答

ibeautiful

为了访问dataJSON 的字段,您需要创建一个类似的结构并将 JSON 有效负载解码到其中。var incomingJSON struct {    Data []SomethingCool `json:"data"`}当您将 JSON 解组到此结构中时,您应该可以将数据作为SomethingCools 的切片访问。完整程序:package mainimport (    "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)    }}
随时随地看视频慕课网APP

相关分类

Go
我要回答