猿问

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

我正在努力从以下代码中获得正确的输出:


package main


import (

    "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 的新手,我已经被困在这个问题上好几个小时了。请帮忙。


哔哔one
浏览 161回答 1
1回答

尚方宝剑之说

这已经出现很多次了。问题是只能对导出的字段进行编组/解组。通过以大写(大写)字母开头来导出结构字段。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"`}
随时随地看视频慕课网APP

相关分类

Go
我要回答