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{},但是您需要索引映射以获取不同的值,并且您还需要使用类型断言来获取“类型化”值。
- 1 回答
- 0 关注
- 395 浏览
添加回答
举报
0/150
提交
取消