如何在 GO 中访问 JSON 的字段

大家好,我想看看在 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"},

         {...},

]}

有没有办法只打印 Json 的“测试”?访问该字段的正确方法是什么?


慕少森
浏览 162回答 3
3回答

交互式爱情

使用encoding/jsonpackage 将数据解组为结构体,如下所示。type Result struct {    ID   string        `json:"id"`    Name string        `json:"name"`    Test []interface{} `json:"test"`}var result Resultjson.Unmarshal(contents, &result)fmt.Println(result.Test)您还可以解析Test为特定的结构。

猛跑小猪

与上一个答案相同,使用 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"])

喵喵时光机

如果您只想访问一个字段,那么您可以使用 jsonq 模块https://godoc.org/github.com/jmoiron/jsonq对于您的示例,您可以使用类似于jq.Object("test")其中 jq 是从上面的 JSON 构造的 jsonq 查询对象(有关如何从 JSON 流或字符串创建查询对象的说明,请参阅 godoc 页面)。您还可以使用此库来检索 JSON 对象内任意深度的特定字符串、整数、浮点数和布尔值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go