为什么struct字段显示为空?
问题描述:
我挣扎着爬从下面的代码输出正确的:为什么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
打印时的结构域是空的。我相信在某个地方有一个愚蠢的错误,但我仍然是新的去,我已经坚持了几个小时。请帮忙。
答
这已经出现了很多次。问题是只有导出的字段可以编组/解组。
通过以大写(大写)字母开头输出struct字段。
type Animal2 struct {
Name string
Spec string
Id uint32
}
请注意,JSON文本包含带有小写文本的字段名称,但json
程序包“足够聪明”,足以与它们匹配。如果他们是完全不同的,你可以使用结构标签告诉json
包他们是如何发现(或应如何编组)在JSON文本,比如:
type Animal2 struct {
Name string `json:"json_name"`
Spec string `json:"specification"`
Id uint32 `json:"some_custom_id"`
}
矿约为解组(不是大原因),但是这个问题的答案并没有说清楚原因。当我搜索时它并没有显示出来。 – user568109