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

标签 json go struct

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

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

游乐场 snippet

打印时结构字段为空。我确信某处有一个愚蠢的错误,但我对 Go 还是新手,我已经被困了几个小时。请帮忙。

最佳答案

这已经出现了很多次了。问题是只能对导出的字段进行编码/解码。
通过以大写(大写)字母开头来导出结构字段。

type Animal2 struct {
    Name string
    Spec string
    Id   uint32
}
Go Playground 上试用.
请注意,JSON 文本包含带有小写文本的字段名称,但 json package 足够“聪明”来匹配它们。如果它们完全不同,您可以使用结构标签来告诉 json打包如何在 JSON 文本中找到它们(或如何编码),例如:
type Animal2 struct {
    Name string `json:"json_name"`
    Spec string `json:"specification"`
    Id   uint32 `json:"some_custom_id"`
}

关于json - 为什么结构字段显示为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59751799/

相关文章:

java - 如何解析数据集apache spark java中的多行json

python - 在Scrapy中,如果字符串长度很大,extract_first()不会返回完整的文本

go - Go语言内置的http服务器是生产服务器吗?

c - 将 sizeof() 与结构一起使用

c++ - 表示带有 union 和位域的寄存器的问题

javascript - 由于某种原因我无法访问对象数组的值

c++ - 如何使用 JSON 实现带有 POCO C++ 网络库的 REST API 服务器?

xml - 在具有任意结尾的元素的GO xml中解析

转到文件夹结构相同的包

c++ - 在结构上应用 std 算法?