JSON to Go構造体

JSONを貼り付けてjsonタグと適切な命名規則を備えたイディオマティックなGo構造体定義を生成します。

このツールについて

JSON to Go構造体変換ツールは、任意のJSONデータからイディオマティック なGo構造体定義を自動生成する無料のブラウザベースツールです。 APIレスポンス、設定ファイル、データベースレコード用の構造体型を 手動で記述する代わりに、生のJSONを貼り付けるだけで、正確で すぐに使えるGoコードがミリ秒で得られます。

変換ツールはJSON構造全体にわたって再帰的な型推論を行います。 プリミティブ値は対応するGo型(stringint64float64bool)にマッピングされます。ネスト オブジェクトは独自の名前付き構造体として抽出され、フィールド キーからPascalCase変換で名前が生成されます。例えば、 shipping_address フィールドは ShippingAddress 構造体を生成します。ID、URL、HTTP、JSON、APIなどの一般的な GoアクロニムはGoの命名規則に従って自動的に大文字化されます。

すべての処理はブラウザ内で完結します。JSONデータがマシンの 外に出ることはなく、サーバーへの通信、ログ記録、サードパーティ の分析も一切ありません。内部APIレスポンス、認証トークン、 シークレットを含む設定ファイルなどの機密ペイロードでも安全に 使用できます。

追加オプションでプロジェクトのコーディング規約に合わせて出力を カスタマイズできます。個別の名前付き構造体とインラインネスト 構造体の切り替え、すべてのjsonタグへのomitemptyの追加、 null可能フィールドへのポインタ型の有効化が可能です。すべての フィールドに元のJSONキー名を保持する json:"fieldName" タグが含まれ、Goの encoding/json パッケージによるシームレスなマーシャリング とアンマーシャリングが保証されます。

使い方

  1. 左側の JSON Input パネルにJSONを貼り付けまたは入力します。
  2. 右パネルにGo構造体出力が入力に応じて自動更新されます。
  3. Root struct 名を設定して、トップレベルの構造体名をカスタマイズします(デフォルトは "AutoGenerated")。
  4. inline トグルをクリックして、個別の名前付き型の代わりにネスト構造体を親構造体内に直接埋め込みます。
  5. omitempty を有効にすると、すべてのjson構造体タグにomitemptyオプションが追加されます。
  6. *nullable を有効にすると、JSON入力でnullのフィールドにポインタ型が使用されます。
  7. Copy をクリックするか Ctrl+Shift+C で生成されたGoコードをクリップボードにコピーします。Sample でサンプルJSONを読み込めます。

JSON to Go構造体の人気サンプル

すべての15件のJSON to Go例を見る →

よくある質問

ネストJSONオブジェクトはどのように処理されますか?

デフォルトでは、各ネストオブジェクトは独自の名前付きGo構造体として抽出されます。名前はフィールドキーからPascalCase変換で生成されます。例えば、billing_addressフィールドはBillingAddress構造体を生成します。名前の衝突が発生する場合(例:両方が「Address」に正規化されるフィールド)、数値サフィックスが自動追加されます(Address、Address2など)。inlineオプションを有効にすると、ネスト構造体を親に直接埋め込むこともできます。

JSONキーはどのようにGoフィールド名に変換されますか?

snake_case、camelCase、kebab-caseのJSONキーはすべてPascalCase(エクスポートされたGo名)に変換されます。ID、URL、HTTP、JSON、API、UUIDなどの一般的なGoアクロニムはGoコミュニティの規約に従って自動的に大文字化されます。元のJSONキーは常にjson:"..."構造体タグに保持されます。

JSON数値型はどのようにGo型にマッピングされますか?

小数部のない数値(例:42、-7)はint64にマッピングされます。小数を含む数値(例:3.14)はfloat64にマッピングされます。これはほとんどのユースケースに安全なデフォルトを提供します。int32、uint64、その他の数値型が必要な場合は、生成されたコード内で手動で型を調整できます。

JSONのnull値はどうなりますか?

デフォルトでは、null値は実際の型を推論できないためinterface{}にマッピングされます。*nullableオプションを有効にすると、nullフィールドはポインタ型(*interface{})を使用します。これはJSONアンマーシャリング時にゼロ値と未設定値を区別するためのイディオマティックなGoアプローチです。

配列はどのように処理されますか?

配列の最初の要素から要素型が推論されます。例えば、文字列の配列は[]string、オブジェクトの配列は対応する構造体型のスライスになります。空の配列は要素型を判定できないため[]interface{}にデフォルト設定されます。

データは安全ですか?

はい。すべての型推論とコード生成はJavaScriptを使用してブラウザ内で完全に実行されます。サーバーへのデータ送信は一切ありません。ブラウザの開発者ツールのネットワークタブで確認できます。

インライン構造体と個別構造体の違いは何ですか?

個別構造体(デフォルト)では、各ネストオブジェクトが独自のトップレベルtype ... struct定義を持ちます。同じ型を複数箇所で参照する必要がある場合はこちらが適しています。インライン構造体では、無名構造体構文を使用してネストオブジェクトが親構造体内に直接定義されます。すべてを単一の定義にまとめたい場合に便利です。

関連ツール