猿问

解析服务器发送的数组/切片

服务器正在发回这样的响应:


me@linux:~> curl -X GET http://*.*.*.*:8080/profiles


[

        {

                "ProfileID": 1,

                "Title": "65micron"

        },

        {

                "ProfileID": 2,

                "Title": "80micron"

        }

]

我已尝试使用此解决方案将响应解析为 JSON,但仅当服务器响应如下所示时才有效:


{

    "array": [

        {

                "ProfileID": 1,

                "Title": "65micron"

        },

        {

                "ProfileID": 2,

                "Title": "80micron"

        }

    ]

}

有人知道我如何将服务器响应解析为 JSON 吗?


我想到的一个想法是添加{ "array":到缓冲区的开头http.Response.Body并添加}到它的结尾,然后使用标准解决方案。但是,我不确定这是否是最好的主意。



一只甜甜圈
浏览 91回答 2
2回答

千巷猫影

您可以直接解组为数组data := `[    {        "ProfileID": 1,        "Title": "65micron"    },    {        "ProfileID": 2,        "Title": "80micron"    }]`type Profile struct {    ProfileID int    Title     string}var profiles []Profilejson.Unmarshal([]byte(data), &profiles)您也可以直接从Request.Body.func Handler(w http.ResponseWriter, r *http.Request) {    var profiles []Profile    json.NewDecoder(r.Body).Decode(&profiles)    // use `profiles`}操场

千万里不及你

你应该定义一个结构type Profile struct {    ID int `json:"ProfileID"`    Title string `json:"Title"`}在解码响应之后var r []Profileerr := json.NewDecoder(res.Body).Decode(&r)
随时随地看视频慕课网APP

相关分类

Go
我要回答