服务器正在发送回这样的响应:
me@linux:~> curl -X GET http://*.*.*.*:8080/profiles
[
{
"ProfileID": 1,
"Title": "65micron"
},
{
"ProfileID": 2,
"Title": "80micron"
}
]
我曾尝试this solution将响应解析为JSON,但如果服务器响应如下,它仅可用于:
{
"array": [
{
"ProfileID": 1,
"Title": "65micron"
},
{
"ProfileID": 2,
"Title": "80micron"
}
]
}
有人知道我如何将服务器响应解析为JSON吗?
我想到的一个主意是在{ "array":
缓冲区的开头添加http.Response.Body
,并在结尾处添加}
,然后使用the standard solution。但是,我不确定这是否是最好的主意。
答案 0 :(得分:2)
您可以直接将其解组为数组
data := `[
{
"ProfileID": 1,
"Title": "65micron"
},
{
"ProfileID": 2,
"Title": "80micron"
}]`
type Profile struct {
ProfileID int
Title string
}
var profiles []Profile
json.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`
}
答案 1 :(得分:1)
您应该定义一个结构
type Profile struct {
ID int `json:"ProfileID"`
Title string `json:"Title"`
}
在解码响应之后
var r []Profile
err := json.NewDecoder(res.Body).Decode(&r)