将结构转换为JSON,其中字段是另一个结构
我有两个结构:将结构转换为JSON,其中字段是另一个结构,json,go,bson,Json,Go,Bson,我有两个结构: type A struct { Zip string `json:"zip"` } type B struct { Foo string `bson:"foo"` Bar A `json:"bar"` } 当我尝试json.Marshal输入B类型时,Bar字段无法正确转换。字段正常,但值始终为空。输出如下所示: {“foo”:“一些字符串值”,“bar”:{“zip”:“}}} 我做错了什么?未填充A中的Zip字段 type A struc
type A struct {
Zip string `json:"zip"`
}
type B struct {
Foo string `bson:"foo"`
Bar A `json:"bar"`
}
当我尝试json.Marshal
输入B
类型时,Bar
字段无法正确转换。字段正常,但值始终为空。输出如下所示:
{“foo”:“一些字符串值”,“bar”:{“zip”:“}}}
我做错了什么?未填充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)
}
输出为():
即使有地图
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)
}
键入一个结构{
Zip字符串`json:“Zip”`
}
B型结构{
Foo字符串`bson:“Foo”`
Bar A`json:“Bar”`
}
func main(){
m:=make(映射[string]B)
对于x:=0;x<10;x++{
m[strconv.Itoa(x)]=B{“你好”,A{“35000”}
}
json,:=json.Marshal(m)
fmt.Printf(“%s\n”,json)
}
输出很好,我不明白你哪里错了。你在填充Zip字段吗?如何填充?所有字段
Bar
都填充了A
的实例。并且该实例已填充了Zip
。的Zip字段未填充。专注于找出原因。它是填充的。当我有一个B
的实例时,我只需做B.Bar=a,a
就是先前正确填充的a
的一个实例。如果你fmt.Printf(“%#v\n”,B)
,你会得到什么?我有一个B
项的映射,当我尝试json.marshall(myMap)
,你会得到什么,栏
字段中填充了空字符串值。@DanielRibeiro您能用观察到问题的确切代码更新您的问题吗?问题中没有提到myMap
或B
项目的地图。
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)
}