为了账号安全,请及时绑定邮箱和手机立即绑定

json.Marshal 返回奇怪的结果

json.Marshal 返回奇怪的结果

Go
青春有我 2021-07-12 17:11:28
我正在尝试将 go 结构转换为 JSON。我以为我知道该怎么做,但我对这个程序的输出感到困惑。我错过了什么?package mainimport "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]预期输出(类似的东西):{Magical Mystery Zoo [{Cow Moo} {Cat Meow} {Fox ???}]}{    "name" : "Magical Mystery Zoo",    "animals" : [{             "name" : "Cow",             "says" : "moo"         }, {             "name" : "Cat",             "says" : "Meow"         }, {             "name" : "Fox",             "says" : "???"         }    ] }哪里[123 125]来的?
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

编组的结果是[]byte这样,123并且125是 ascii for {and}

必须导出结构字段才能进行编组工作:

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


查看完整回答
反对 回复 2021-07-19
?
温温酱

TA贡献1752条经验 获得超4个赞

您的问题出在结构中的未导出(如果您愿意,可以称之为非公开)字段中。这是 Go Play 上的示例,您可以如何修复它。

此外,如果您不喜欢 JSON 字段的命名方式(在大多数情况下为大写字母),您可以使用 struct 标签更改它们(请参阅json.Marshal doc)。


查看完整回答
反对 回复 2021-07-19
  • 2 回答
  • 0 关注
  • 318 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信