ネストされた構造体をJSONにマーシャリングするにはどうすればよいですか?ネストされた構造体なしで構造体をマーシャリングする方法を知っています。しかし、JSON応答を次のようにしようとすると:
{"genre": {"country": "taylor Swift", "rock": "aimee"}}
問題が発生しました。
私のコードは次のようになります:
行く:
type Music struct {
Genre struct {
Country string
Rock string
}
}
resp := Music{
Genre: { // error on this line.
Country: "Taylor Swift",
Rock: "Aimee",
},
}
js, _ := json.Marshal(resp)
w.Write(js)
しかし、私はエラーが出ます
Missing type in composite literal
どうすれば解決できますか?
これがあなたのタイプの複合リテラルです:
resp := Music{
Genre: struct {
Country string
Rock string
}{
Country: "Taylor Swift",
Rock: "Aimee",
},
}
リテラルで匿名型を繰り返す必要があります。繰り返しを避けるために、ジャンルのタイプを定義することをお勧めします。また、フィールドタグを使用して、出力で小文字のキー名を指定します。
type Genre struct {
Country string `json:"country"`
Rock string `json:"rock"`
}
type Music struct {
Genre Genre `json:"genre"`
}
resp := Music{
Genre{
Country: "Taylor Swift",
Rock: "Aimee",
},
}
JsonUtilsを使用します。 jsonファイルからGo構造を生成するプログラムです。
https://github.com/bashtian/jsonutils
構造体の値にjsonパラメータを設定しないのはなぜですか? https://play.golang.org/p/n6aJdQgfom