如何让 json 响应在 go 中正常工作

下面的代码通过显示 json 数组数据正常工作。这是下面代码中的工作 Json 响应

 {"provision":"provision section 1", 
    "subsets": [{"item":"milk"},{"payments": [{"price": "200 usd"}]}]}

现在我有如下新的 json 响应。在下面的新 json 响应中,参数子集现在被方括号{}包围

{
    "provision":{"subsets": [{"item":"milk"},{"payments": [{"price": "200 usd"}]}]}
}

如果我在代码中集成 New json,它会显示错误cannot unmarshal object into Go struct field Head.Provision。解决对象问题的任何解决方案将不胜感激


慕的地8271018
浏览 149回答 2
2回答

动漫人物

下面是我是如何让它工作的。谢谢package mainimport (    "bytes"    "encoding/json"    "fmt"    "log")type Head struct {    Provision  Prov `json:"provision"`    //Subsets []Subset `json:"subsets"`}type Prov struct {   Subsets []Subset `json:"subsets"`}type Subset struct {    Payments []Payment `json:"payments"`        Item string `json:"item"`}type Payment struct {    Price string `json:"price"`}func main() {m := []byte(`        {"provision":       {"subsets": [{"item":"milk"},{"payments": [{"price": "200 usd"}]},{"item":"SUGAR"},{"payments": [{"price": "600 usd"}]}]}}`)    r := bytes.NewReader(m)    decoder := json.NewDecoder(r)    val := &Head{}    err := decoder.Decode(val)    if err != nil {        log.Fatal(err)    }//fmt.Println(val.Provision)    // Subsets is a slice so you must loop over it     for _, s := range val.Provision.Subsets {        fmt.Println(s.Item)        // within Subsets, payment is also a slice        // then you can access each price        for _, a := range s.Payments {            fmt.Println(a.Price)        }    }}

阿波罗的战车

type Head struct {    Provision Provision `json:"provision"`}type Provision struct {    Subsets []Subset `json:"subsets"`}https://play.golang.org/p/3TgxBOng1qE完整版在这里。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go