我正试图在Go to JSON中编组一个结构但是它不会编组,我无法理解为什么。
我的结构定义
type PodsCondensed struct {
pods []PodCondensed `json:"pods"`
}
func (p *PodsCondensed) AddPod(pod PodCondensed) {
p.pods = append(p.pods, pod)
}
type PodCondensed struct {
name string `json:"name"`
colors []string `json:"colors"`
}
创建和编组测试结构
fake_pods := PodsCondensed{}
fake_pod := PodCondensed {
name: "tier2",
colors: []string{"blue", "green"},
}
fake_pods.AddPod(fake_pod)
fmt.Println(fake_pods.pods)
jPods, _ := json.Marshal(fake_pods)
fmt.Println(string(jPods))
输出
[{tier2 [blue green]}]
{}
我不确定这里的问题是什么,我导出了所有结构的json数据,数据正确存储并且可以打印。它只是不会编组,这是奇怪的,因为结构中包含的所有内容都可以单独封送到JSON。
答案 0 :(得分:3)
这是一个常见的错误:您没有导出PodsCondensed
和PodCondensed
结构中的值,因此json包无法使用它。使用变量名中的大写字母来执行此操作:
type PodsCondensed struct {
Pods []PodCondensed `json:"pods"`
}
type PodCondensed struct {
Name string `json:"name"`
Colors []string `json:"colors"`
}