埋め込み構造体をjsonに変換したときに埋め込み構造体の構造体名を残して欲しい
Go言語の分からない部分についてのぼやき.
以下のように構造体を定義していたとする.
type User struct { Name string `json:"name"` Id int `json:"id"` Status } type Status struct { Power int `json:"power"` Speed int `json:"speed"` }
以下のようにjson.Marshal
を使って構造体を分割して出力すると
func main () { s1 := Status{5, 6} user1 := User{"hoge", 1, s1} user1.Status = s1 j, _ := json.Marshal(user1) var buf bytes.Buffer buf.Write(j) os.Stdout.Write(j) }
このように出力されるけど,
{"name":"hoge","id":1,"power":5,"speed":6}
できれば下のように出力して欲しい場面があった(送信先で構造体に戻したいときとか)
{"name":"hoge","id":1,"status":{"power":5,"speed":6}}
調べたらありそうな気がするけど,良い調べ方がわからなかった....
とりあえずメモっておく.
追記
type User struct { Name string `json:"name"` Id int `json:"id"` Status `json:"status"` }
で普通にできた