我有两个结构结构:
type A struct {
Zip string `json:"zip"`
}
type B struct {
Foo string `bson:"foo"`
Bar A `json:"bar"`
}
当我尝试json.Marshal
B
类型时,Bar
字段无法正确转换。字段正常,但值始终为空。输出如下:
{"foo": "some-string-value", "bar": {"zip": ""}}
我做错了什么?
答案 0 :(得分:4)
未填充A中的Zip字段。
type A struct {
Zip string `json:"zip"`
}
type B struct {
Foo string `bson:"foo"`
Bar A `json:"bar"`
}
func main() {
one := A{"35000"}
two := B{"Foo", one}
json, _ := json.Marshal(two)
fmt.Printf("%s\n", json)
}
输出为(https://play.golang.org/p/kyG1YabpSe):
{"Foo":"Foo","bar":{"zip":"35000"}}
即使有地图
type A struct {
Zip string `json:"zip"`
}
type B struct {
Foo string `bson:"foo"`
Bar A `json:"bar"`
}
func main() {
m := make(map[string]B)
for x := 0; x < 10; x++ {
m[strconv.Itoa(x)] = B{"Hello", A{"35000"}}
}
json, _ := json.Marshal(m)
fmt.Printf("%s\n", json)
}
https://play.golang.org/p/qCsmAGzo4H
输出很好,我不明白你哪里错了。