为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 GO 中访问 JSON 的字段

如何在 GO 中访问 JSON 的字段

Go
慕少森 2021-12-20 10:06:56
大家好,我想看看在 go 中从 http.get 请求访问 json 对象字段的正确方法是什么。我首先做一个 http.get 调用获取 JSON 然后打印它(它有效)但是有没有办法只访问一个字段?例如:response, err:= http.Get("URL")//Error checking is done betweencontents, 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 的“测试”?访问该字段的正确方法是什么?
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

使用encoding/jsonpackage 将数据解组为结构体,如下所示。


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)

您还可以解析Test为特定的结构。


查看完整回答
反对 回复 2021-12-20
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-12-20
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

如果您只想访问一个字段,那么您可以使用 jsonq 模块https://godoc.org/github.com/jmoiron/jsonq

对于您的示例,您可以使用类似于

jq.Object("test")

其中 jq 是从上面的 JSON 构造的 jsonq 查询对象(有关如何从 JSON 流或字符串创建查询对象的说明,请参阅 godoc 页面)。

您还可以使用此库来检索 JSON 对象内任意深度的特定字符串、整数、浮点数和布尔值。


查看完整回答
反对 回复 2021-12-20
  • 3 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信