大家好,我想看看在go中从http.get请求访问json对象字段的正确方法是什么。
我首先执行http.get调用获取JSON,然后将其打印(有效),但是有没有办法仅访问字段?
例如:
response, err:= http.Get("URL")
//Error checking is done between
contents, err:=ioutil.Readall(response.Body)
//Now at this point I have a json that looks like
{"id": "someID",
"name": "someName",
"test": [{"Name":"Test1",
"Result": "Success"},
{"Name":"Test2",
"Result": "Success"},
{...},
]}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法只能打印Json的“测试”?访问该字段的正确方法是什么?
小智 9
与上一个答案相同,使用 encoding/json 包解组数据。但是如果你不想指定结构,你可以使用 map[string]interface/bson.M{} 来接收数据,并获取字段,然后转换为你想要的类型。
m := make(map[string]interface{})
err := json.Unmarshal(data, &m)
if err != nil {
log.Fatal(err)
}
fmt.Println(m["id"])
Run Code Online (Sandbox Code Playgroud)
使用encoding/json
包将数据解组到结构中,如下所示。
type Result struct {
ID string `json:"id"`
Name string `json:"name"`
Test []interface{} `json:"test"`
}
var result Result
json.Unmarshal(contents, &result)
fmt.Println(result.Test)
Run Code Online (Sandbox Code Playgroud)
您还可以解析Test
为特定的结构。