返回奇怪结果的json.Marshal

返回奇怪结果的json.Marshal,json,go,Json,Go,我正在尝试将go结构转换为JSON。我以为我知道怎么做,但我被这个程序的输出搞糊涂了。我错过了什么 package main import "fmt" import "encoding/json" type Zoo struct { name string animals []Animal } type Animal struct {

我正在尝试将go结构转换为JSON。我以为我知道怎么做,但我被这个程序的输出搞糊涂了。我错过了什么

package main
import "fmt"
import "encoding/json"

type Zoo struct {                                                                       
    name string
    animals []Animal
}
type Animal struct {
    species string
    says string
}

func main() {
    zoo := Zoo{"Magical Mystery Zoo",                                                   
         []Animal {
            { "Cow", "Moo"},
            { "Cat", "Meow"},
            { "Fox", "???"},
        },
    }
    zooJson, err := json.Marshal(zoo)
    if (err != nil) {
        fmt.Println(err)
    }

    fmt.Println(zoo)
    fmt.Println(zooJson)
}
输出:

{Magical Mystery Zoo [{Cow Moo} {Cat Meow} {Fox ???}]}
[123 125]
预期产出(大致如下所示):

[123 125]
从哪里来


谢谢你的帮助

封送处理的结果是
[]字节
,因此
123
125
{
}
的ascii码

必须导出结构字段才能进行封送处理:

每个导出的结构字段都成为对象的成员


您的问题位于结构中的未报告(如果需要,可以称之为非公共)字段中。你怎么能修好它


此外,如果您不喜欢JSON字段的命名方式(大多数情况下都是大写字母),可以使用结构标记对其进行更改(请参见)。

这是我在golang structs中遗漏的内容。谢谢你的提醒。
{Magical Mystery Zoo [{Cow Moo} {Cat Meow} {Fox ???}]}
{
    "name" : "Magical Mystery Zoo",
    "animals" : [{
             "name" : "Cow",
             "says" : "moo"
         }, {
             "name" : "Cat",
             "says" : "Meow"
         }, {
             "name" : "Fox",
             "says" : "???"
         }
    ]
 }