左側に Go を貼り付けて 「変換」 を押してください — JSON に変換しますGo コードを貼り付け

このツールの役割

json:"..." タグ付きの Go の struct と、どこかで宣言された composite literal(order := Order{...})があって、encoding/json が生成するはずの JSON が欲しい──そんなときに使います。両方を左のエディタに貼り付けて「変換」を押してください。タグを読み取り、omitempty- のルールを適用し、nil ポインタを処理して、json.MarshalIndent が出力するのと同じ JSON を返します。go run での往復が不要になります。

単純な置換ではなく、実際の Go のマーシャリングのセマンティクスに従います。エクスポートされたフィールド名は json タグの最初の部分でリネームされます。omitempty はゼロ値(空文字、0、false、nil、空の slice/map)を落とします。タグが - の場合、フィールドは除外されます。埋め込み(匿名)struct のフィールドは encoding/json と同じように昇格されます。time.TimeRFC 8259 互換の RFC 3339 形式の文字列として出力され、バイトスライス([]byte)は base64 エンコードされます。

数値型も Go のルールに従います。float64 は精度を保ち、int/int64 は数値のまま、nil ポインタは JSON の null になります。slice は JSON 配列になりますが、nil slice は null[] ではありません)になります──これは Marshal のデフォルト挙動に合わせています。map[string]V は JSON オブジェクトになります。複数の struct をまとめて貼り付ければ、各インスタンスがトップレベルのエントリとして出力されます。

使い方

3 ステップです。小さな struct でも、<code>types.go</code> ファイル丸ごとでも動きます。

1

Go を貼り付ける(またはサンプルを試す)

左のエディタに struct 定義と composite literal(order := Order{...})を入れてください。struct 単体埋め込みフィールドを持つ複数の structパッケージレベルの宣言、どれでも OK です。リアルな出発点が欲しい場合は サンプルを読み込む をクリックしてください。

package 行と import はそのままで大丈夫です──パーサーは無視します。struct タグ、メソッドレシーバ、コメントも問題ありません。参考として、encoding/json.Marshal のドキュメントにこのツールが従うすべてのルールが書かれています。エッジケースに当たったら Go のソースリポジトリ も見る価値ありです。

2

「変換」を押す

緑色の 変換 ボタンをクリックします。ツールが struct 定義をパースし、composite literal を解決し、タグのルールを適用して、インデント付きの JSON を出力します。

3

JSON をコピーする

右側のパネルに、API リクエスト、テストテーブル、設定ファイル、あるいは os.ReadFile で読み込むフィクスチャにそのまま使える JSON が入ります。

実際に役立つ場面

HTTP ハンドラのリクエスト/レスポンスサンプル

<code>net/http</code> や <code>gin</code> ハンドラ用のリクエスト/レスポンス struct があるときに使えます。literal と一緒に貼り付ければ、curl で送信したり Postman に貼り付けられる JSON ボディが得られます。

テーブル駆動テストのフィクスチャ

テーブルテストの struct インスタンスを、ゴールデンファイルテストや外部ツール向けに独立した JSON ファイルに変換できます。

Kubernetes の CRD とマニフェスト

カスタムリソースやコントローラーのペイロードを表す Go の struct を、<code>kubectl apply</code> や Kubernetes API が使う JSON 形式に変換できます。

Kafka / NATS / gRPC-gateway のメッセージ

Go のメッセージ struct を JSON にシリアライズして、パイプライン全体を立ち上げずに producer のテスト、サンプルペイロード、ドキュメントに使えます。

よくある質問

struct の json タグは反映されますか?

はい。タグの最初の値でフィールド名がリネームされ、omitempty でゼロ値が落ち、- でフィールドが完全に除外されます。encoding/json Marshal のリファレンスに書かれているルールと同じです。

time.Time と []byte はどう処理されますか?

time.Timetime.Time.MarshalJSON と同じく RFC 3339 形式(例: "2026-03-14T10:30:00Z")でフォーマットされます。[]byte は標準ライブラリのデフォルトと同じく base64 エンコードされて JSON 文字列になります。

nil ポインタと nil slice はどうなりますか?

nil ポインタは JSON の null になります。nil slice も null[] ではありません)になります──Go のデフォルト挙動です。空の配列が欲しい場合は []T{} で slice を初期化してください。

埋め込み(匿名)struct のフィールドは昇格されますか?

はい。埋め込み struct のフィールドは外側のオブジェクトにフラット化されます──ただし、埋め込み struct 自体に json タグがある場合を除きます。encoding/json のルールと同じです。

複数の struct を含むファイルをまとめて貼れますか?

はい。貼り付けた中でインスタンスを持つすべての struct 型が、それぞれ独立したエントリとして JSON に出力されます。ネストした struct 型は使われている場所でインライン展開されます。

コードはどこかに保存されますか?

コードは変換のためにバックエンドに送られますが、保存もログ記録もされません。とはいえオンラインツール全般と同様、機密コードを貼る前にはひと呼吸おいて確認してください。

関連するツール

Go → JSON はパズルの一ピースに過ぎません。相性のいいツールを並べておきます: