JSONをGo構造体に変換
json-to-go の移植版を使って JSON から Go の struct 定義を生成し、gofmt で整形します。キーは json:"..." タグ付きのエクスポートされた CamelCase フィールドになり、ネストしたオブジェクトはインラインの匿名 struct、null は any になります。
サードパーティの REST API レスポンスを json.Unmarshal するための struct を書く。
こんなときに使えます
- サードパーティの REST API レスポンスを json.Unmarshal するための struct を書く。
- サンプルのペイロードから、Go の HTTP ハンドラーのリクエスト型とレスポンス型のひな形を作る。
使い方
- 左側のエディターに JSON オブジェクトまたは配列を貼り付けます。
- 生成された struct を確認します。ルートの型名は常に AutoGenerated です。
- パッケージにコピーして型名を変更します。インラインの struct を再利用する場合は名前付きの型に切り出してください。
JSON
{
"id": 42,
"user_name": "ada",
"score": 9.5,
"active": true,
"deleted_at": null,
"tags": ["go", "json"],
"address": { "city": "Tokyo", "zip": "100-0001" }
}Go struct
type AutoGenerated struct {
ID int `json:"id"`
UserName string `json:"user_name"`
Score float64 `json:"score"`
Active bool `json:"active"`
DeletedAt any `json:"deleted_at"`
Tags []string `json:"tags"`
Address struct {
City string `json:"city"`
Zip string `json:"zip"`
} `json:"address"`
}仕様と制限
生成はブラウザ内で行います。型名、インライン/名前付き struct、タグに関する設定はありません。
頭字語は大文字になり(id は ID)、snake_case は CamelCase になります。元のキーは json タグに残ります。
整数は int(大きい値は int64)、小数は float64 になります。null、空配列、型が混在する配列は any または []any になります。
配列内のオブジェクトの構造が異なる場合、一部にしかないキーには ,omitempty が付きます。
FAQ
ルートが配列の JSON も変換できますか?
できます。配列内のすべてのオブジェクトのフィールドをまとめた type AutoGenerated []struct{...} を生成します。
null のフィールドが any になるのはなぜですか?
null の値には型情報がありません。nil を扱えるようにするには、any を *string や *time.Time などのポインターに置き換えてください。
名前付きのネストした struct を生成できますか?
できません。ネストしたオブジェクトはインラインの匿名 struct になります。参照する必要がある場合は、手動で名前付きの型に移してください。