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

golang中如何解析json数组?

golang中如何解析json数组?

Go
侃侃尔雅 2021-12-07 18:35:13
package mainimport (    "encoding/json"    "fmt")type PublicKey struct {    name string    price string}type KeysResponse struct {    Collection []PublicKey}func main() {    s := `[{"name":"Galaxy Nexus", "price":"3460.00"},{"name":"Galaxy Nexus", "price":"3460.00"}]`    keys := make([]PublicKey,0)    err := json.Unmarshal([]byte(s), &keys)    if err == nil {        fmt.Printf("%+v\n", keys)    } else {        fmt.Println(err)        fmt.Printf("%+v\n", keys)    }}输出: [{name: price:}]我有 api 调用返回的结果就像对象数组(json 数组)复杂格式。我需要通过 golang 解析该结果,我该如何实现?以下数据是我从 api 调用获得的结果。
查看完整描述

1 回答

?
杨__羊羊

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

您只错过了一点:您需要导出结构的字段:


type PublicKey struct {

    Name  string

    Price string

}

它会起作用(在Go Playground上试试):


[{Name:Galaxy Nexus Price:3460.00} {Name:Galaxy Nexus Price:3460.00}]

请注意,JSON 文本包含带有小写文本的字段名称,但该json包足够“聪明”以匹配它们。如果它们完全不同,您可以使用结构标记来告诉json包它们是如何在 JSON 文本中找到的(或者它们应该如何被编组),例如:


type PublicKey struct {

    Name  string `json:"some_name"`

    Price string `json:"JsonPrice"`

}

要解析您的其他 JSON 文本,请创建一个对 JSON 数据建模的 Go 结构。我建议格式化 JSON 以查看真实结构,例如您可以使用此在线 JSON formatter/validator。然后你可以解组成这个结构的一部分。


或者简单地解组为一个映射片段,例如[]map[string]interface{},但是您需要索引映射以获取不同的值,并且您还需要使用类型断言来获取“类型化”值。


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

添加回答

举报

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