本文へスキップ
AZ Tools

JSON to Go 構造体コンバーター

サンプルの JSON ペイロードを貼り付けると、対応する Go の型定義が即座に得られます — 変換は入力と同時にライブで、すべてブラウザ内で実行されます。オブジェクトのキーは encoding/json がマーシャリングできるようエクスポートされた PascalCase のフィールド名に変換され、各フィールドには元のキーを保持する json:"…" タグが付くため、標準ライブラリで往復させても元の JSON がそのまま再現されます。整数は int64、小数は float64 にマッピングされ、ネストしたオブジェクトはペイロードの形をそのまま映すインラインの無名構造体になります。 型は 1 つのサンプルから推論されるため、出力はよくできた下書きとして扱ってください。サンプルでたまたま 42 だったフィールドは、API が 41.5 を返し得るとしても int64 になります。null と空配列は要素の型情報がないため interface{} になり、スライスの型は先頭要素だけから決まります。結果を確認し、より正確に分かっている部分は型を絞り、省略可能なフィールドには ,omitempty やポインタ型を手で加えてください。入力は端末の外に出ることはなく、リロードしても残るよう localStorage に保存されます。

Go 構造体

使い方

  1. 入力ボックスに JSON のサンプルを貼り付けるか入力します — 変換はライブで行われ、押すボタンはありません。
  2. 必要ならルート構造体名を付けます(既定は AutoGenerated)。名前はエクスポートされた PascalCase 識別子に正規化されます。
  3. コピーボタンで生成された定義をコピーし、Go ファイルに貼り付けます。
  4. 推論された型を見直します。小数になり得る数値は広げ、interface{} のプレースホルダーを置き換え、省略可能なフィールドには ,omitempty を追加してください。

よくある質問

数値はどの型になりますか?
整数は int64、小数部があるものは float64 になります。1 つのサンプルからの推論なので、小数になり得るフィールドは自分で float64 に変更してください。正確な十進処理が必要なら json.Number の利用も検討を。
null や空配列はどう扱われますか?
null は interface{}、空配列は []interface{} にマッピングされます。サンプルに型情報がまったくないためです。実際の型が分かったら置き換えてください — null になり得るフィールドは Go ではポインタで表すのが適切なことが多いです。
フィールド名と json タグはどう決まりますか?
キーを英数字以外の文字で分割し、PascalCase に連結してエクスポートされた識別子にします(user_id は UserId になります)。encoding/json はエクスポートされたフィールドしか見えないためです。元のキーは json タグにそのまま保持されるので、マーシャリングすれば入力どおりのキーが再現されます。
ネストしたオブジェクトは別の名前付き型になりますか?
いいえ — インラインの無名構造体として出力され、どこにでも貼れる自己完結した 1 つの宣言に収まります。同じ形が複数箇所で繰り返されるなら、手動で名前付き型に抽出してください。また、配列の要素型は先頭要素だけから推論するため、型が混在する配列は検出されません。
私の JSON は送信・保存されますか?
ブラウザの外には出ません — 解析も生成も純粋なクライアントサイド JavaScript です。利便性のため入力とルート名はブラウザの localStorage に保存され、リロード後も残ります。共有端末で機密データを貼り付けた場合は入力を消しておきましょう。

関連ツール