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

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

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

Go
慕的地8271018 2023-06-12 17:32:51
下面的代码通过显示 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。解决对象问题的任何解决方案将不胜感激
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

下面是我是如何让它工作的。谢谢


package main


import (

    "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)

        }

    }



}


查看完整回答
反对 回复 2023-06-12
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

type Head struct {

    Provision Provision `json:"provision"`

}


type Provision struct {

    Subsets []Subset `json:"subsets"`

}

https://play.golang.org/p/3TgxBOng1qE完整版在这里。


查看完整回答
反对 回复 2023-06-12
  • 2 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

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