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

为什么结构字段显示为空?

为什么结构字段显示为空?

Go
哔哔one 2021-11-08 16:18:03
我正在努力从以下代码中获得正确的输出:package mainimport (    "encoding/json"    "fmt")func main() {    var jsonBlob3 = []byte(`[        {"name": "Platypus", "spec": "Monotremata", "id":25 },        {"name": "Quoll",    "spec": "Dasyuromorphia", "id":25 }    ]`)    type Animal2 struct {        name  string        spec string        id uint32    }    var animals []Animal2    err := json.Unmarshal(jsonBlob3, &animals)    if err != nil {        fmt.Println("error:", err)    }    fmt.Printf("%+v\n", animals)}操场片段打印时结构字段为空。我确信某处有一个愚蠢的错误,但我仍然是 Go 的新手,我已经被困在这个问题上好几个小时了。请帮忙。
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

这已经出现很多次了。问题是只能对导出的字段进行编组/解组。


通过以大写(大写)字母开头来导出结构字段。


type Animal2 struct {

    Name string

    Spec string

    Id   uint32

}

在Go Playground上试一试。


请注意,JSON 文本包含带有小写文本的字段名称,但该json包足够“聪明”以匹配它们。如果它们完全不同,您可以使用 struct 标签来告诉json包如何在 JSON 文本中找到它们(或它们应该如何编组),例如:


type Animal2 struct {

    Name string `json:"json_name"`

    Spec string `json:"specification"`

    Id   uint32 `json:"some_custom_id"`

}


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

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