猿问

golang中如何解析json数组?

package main


import (

    "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 调用获得的结果。



侃侃尔雅
浏览 396回答 1
1回答

杨__羊羊

您只错过了一点:您需要导出结构的字段: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{},但是您需要索引映射以获取不同的值,并且您还需要使用类型断言来获取“类型化”值。
随时随地看视频慕课网APP

相关分类

Go
我要回答