Golang Struct不会支持JSON

时间:2015-04-24 20:27:59

标签: json struct go marshalling

我正试图在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。

1 个答案:

答案 0 :(得分:3)

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

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

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