2016-11-17 60 views
-3

轉換結構以JSON我有兩個結構的結構:其中一個領域是另一個結構

type A struct { 
    Zip string `json:"zip"` 
} 

type B struct { 
    Foo string `bson:"foo"` 
    Bar A  `json:"bar"` 
} 

當我嘗試json.MarshalB類型,Bar場不能正確轉換。這些字段是確定的,但值始終爲空。輸出看起來是這樣的:

{"foo": "some-string-value", "bar": {"zip": ""}}

我在做什麼錯?

+3

你是否在填充** Zip **字段?如何 ? –

+0

所有字段都已填充「酒吧」中填充了「A」實例。那個實例有'Zip'填充。 –

+0

A的Zip字段未填充。專注於找出原因。 – Volker

回答

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

輸出還是不錯的,我不明白的地方,你就錯了。

+0

我有一個'B'項目的地圖,當我嘗試使用'json.Marshal(myMap)'時,'Bar'字段填充了空字符串值。 –

+0

@DanielRibeiro你可以使用確切的代碼來更新你的問題嗎?問題中沒有提及'myMap'或'B'項的映射。 –

相關問題