2016-11-17 26 views
-3

ですJSONに構造体を変換する私は2つの構造体の構造体を持っています。フィールドはOKですが、値は常に空です。出力は次のようになります。私は間違って何をやっているフィールドは別の構造体

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

+3

あなたは** Zip **フィールドにデータを入力していますか?そしてどうやって ? –

+0

すべてのフィールドにデータが入力されます。「バー」には「A」のインスタンスが取り込まれます。そのインスタンスには 'Zip'が設定されています。 –

+0

AのZipフィールドにデータが入力されていません。理由を見つけることに集中してください。 – Volker

答えて

4

あなたのZipフィールドにAが設定されていません。

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'のマップの記述はありません。 –

関連する問題