golang如何将json解码为结构体

golang如何将json解码为结构体,第1张

概述我正在尝试解码golang中的一些json,但有些字段没有被解码. 查看浏览器 here中运行的代码: 我究竟做错了什么 ?  我只需要MX记录,所以我没有定义其他字段.据我所知,你不需要定义你不使用/不需要的字段. // You can edit this code!// Click here and start typing.package mainimport "fmt"impor 我正在尝试解码golang中的一些Json,但有些字段没有被解码.
查看浏览器 here中运行的代码:

我究竟做错了什么 ?
我只需要MX记录,所以我没有定义其他字段.据我所知,你不需要定义你不使用/不需要的字段.

// You can edit this code!// Click here and start tyPing.package mainimport "fmt"import "enCoding/Json"func main() {    body := `  {"response": {  "status": "SUCCESS","data": {    "mxRecords": [      {        "value": "us2.mx3.mailhostBox.com.","ttl": 1,"priority": 100,"hostname": "@"      },{        "value": "us2.mx1.mailhostBox.com.",{        "value": "us2.mx2.mailhostBox.com.","hostname": "@"      }    ],"cnameRecords": [      {        "aliasHost": "pop.a.co.uk.","canonicalHost": "us2.pop.mailhostBox.com."      },{        "aliasHost": "webmail.a.co.uk.","canonicalHost": "us2.webmail.mailhostBox.com."      },{        "aliasHost": "smtp.a.co.uk.","canonicalHost": "us2.smtp.mailhostBox.com."      },{        "aliasHost": "imap.a.co.uk.","canonicalHost": "us2.imap.mailhostBox.com."      }    ],"dkimTxtRecord": {      "domainname": "20a19._domainkey.a.co.uk","value": "\"v=DKIM1; g=*; k=rsa; p=DkfbhO8Oyy0E1WyUWwIDAQAB\"","ttl": 1    },"spfTxtRecord": {      "domainname": "a.co.uk","value": "\"v=spf1 redirect=_spf.mailhostBox.com\"","loginUrl": "us2.cp.mailhostBox.com"  }}}`    type MxRecords struct {        value    string        ttl      int        priority int        hostname string    }    type Data struct {        mxRecords []MxRecords    }    type Response struct {        Status string `Json:"status"`        Data   Data   `Json:"data"`    }    type APIR struct {        Response Response    }    var r APIR    err := Json.Unmarshal([]byte(body),&r)    if err != nil {        fmt.Printf("err was %v",err)    }    fmt.Printf("decoded is %v",r)}
根据go documentaiton about json.Unmarshal,你只能解码到导出的字段,主要原因是外部包(例如enCoding / Json)无法访问未导出的字段.

如果您的Json不遵循名称的go约定,则可以在字段中使用Json标记来更改Json键和struct字段之间的匹配.

例:

package mainimport (    "fmt"    "enCoding/Json")type T struct {    Foo string `Json:"foo"`}func main() {    text := []byte(`{"foo":"bar"}`)    var t T    err := Json.Unmarshal(text,&t)    if err != nil {        panic(err)    }    fmt.Println(t)}
总结

以上是内存溢出为你收集整理的golang如何将json解码为结构体全部内容,希望文章能够帮你解决golang如何将json解码为结构体所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存