Go構造体→JSONサンプル生成
GoのstructとjsonタグをJSON形式のサンプルデータへ自動変換するツールです。ネストしたstruct・スライス・omitempty・json:"-"タグにも対応し、APIモックやPostmanのExample作成、フロントエンド開発のサンプルペイロード準備に役立ちます。
使い方のヒント
- 複数のstructをまとめて貼り付けると、ネストしたフィールドの型を自動的に解決して再帰的にサンプルオブジェクトを生成します(定義が見つからない場合は空オブジェクト {} で代替し警告を表示します)。
- 対象Struct名を指定すると、入力に複数のstructがある場合でもルートにしたいstructを選べます(未入力の場合は最初に出現したstructが使われます)。
- json:"-" を指定したフィールドはJSON出力から除外されます。omitempty付きのフィールドもキー自体は通常どおり出力されるため、不要であれば手動で削除してください。
- 生成されるのはあくまで型に基づいたプレースホルダ値(文字列は"example"、数値は1など)です。実際のAPIレスポンス例として使う場合は値を実データに置き換えてください。
- このツールは兄弟ツールのJSON→Go構造体変換の逆方向です。Goのハンドラーで定義したstructから、フロントエンドやQAチーム向けのサンプルペイロードを素早く作成できます。
よくある質問
Goで定義したAPIレスポンス用のstructを手作業でJSON化すると、フィールドの型やjsonタグの解釈を間違えやすく、ネストした構造では特に手間がかかります。自動生成することでフロントエンドチームやQAチームへ正確なサンプルペイロードを素早く共有できます。
入力内に該当するstructの定義が見つからない場合、そのフィールドの値は空オブジェクト {} として出力され、画面に警告メッセージが表示されます。定義元のstructも一緒に貼り付けることで正しくネストしたサンプルが生成されます。
omitemptyはあくまでGo側でゼロ値を省略するための指定なのでキー自体はサンプルJSONにそのまま出力されます。一方 json:"-" が指定されたフィールドはエンコード時に完全に除外されるため、サンプルJSONにも含まれません。
いいえ、あくまで型を満たすためのプレースホルダです。文字列は"example"、整数は1、浮動小数点数は1.5、真偽値はtrueのように固定的な値を割り当てているため、実際のデータとして使う際は適宜書き換えてください。
はい、このツールは正規表現と行単位の解析による簡易パーサーであり、実際のGoの構文解析器(AST)は使用していません。複数行にまたがる型定義や匿名structの入れ子など複雑な記法には対応していないため、あくまで簡易的な下書き生成ツールとしてご利用ください。
余談ですが ― JSON→Go構造体変換の逆方向という発想
GoでWeb APIを実装する際、レスポンスの構造はstructとjsonタグの組み合わせで定義するのが一般的です。しかしフロントエンド開発者やQAエンジニアがAPIの挙動を確認したい場合、Goのコードを読んでフィールドの型を1つずつ頭の中でJSONに変換するのは手間がかかり、誤解も生まれやすい作業です。
このツールは兄弟ツールである「JSON→Go構造体変換」のちょうど逆方向の変換を行います。Goのstruct定義を貼り付けるだけで、jsonタグに従ったキー名と型に応じたプレースホルダ値を持つサンプルJSONを生成し、PostmanのExample作成やフロントエンドのモックデータとしてすぐに使える形にします。
ただしこのツールは本物のGoコンパイラではなく、正規表現と行単位の解析による簡易パーサーです。単純なフィールド定義や、入力内に複数貼り付けられたネストしたstructの解決には対応していますが、匿名structの入れ子や複数行にまたがる型定義など複雑な記法は正しく解析できない場合があります。あくまでたたき台として活用し、最終的な仕様はGoのソースコードと照らし合わせて確認してください。