Golang 结构不会编组为 JSON

Golang Struct Won't Marshal to JSON

我正在尝试将 Go 中的结构编组到 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。

这是一个常见的错误:您没有在 PodsCondensedPodCondensed 结构中导出值,因此 json 包无法使用它。为此,在变量名中使用大写字母:

type PodsCondensed struct {
    Pods    []PodCondensed  `json:"pods"`
}

type PodCondensed struct {
    Name    string      `json:"name"`
    Colors  []string    `json:"colors"`
}