JSON入力

Go出力

JSONをGoとは?

PostmanでREST APIを叩いたばかりで、レスポンスはJSON、Goでアンマーシャルする必要があるのに、深くネストされたレスポンスのstructを手書きするのは本当に面倒です。JSONとGoのencoding/jsonパッケージは相性が良いのですが、Goはネストされたオブジェクトごとに明示的なstruct定義が必要です。フィールドを見逃したり型を間違えたりすると、アンマーシャルは無言でゼロ値を返します。このツールはJSONから完全なstruct treeを生成するので、そのままプロジェクトに貼り付けられます。

設定パネルでstruct名とパッケージを設定してください。JSONタグでjson:"field_name"を有効にし、オプショナルフィールドにはポインタを有効にしてください。

変換は完全にブラウザで実行されます。JSONはサーバーに送信されません。

使い方

1

JSONを貼り付けまたはアップロード

JSONを左のエディタに貼り付けるか、アップロードでファイルを読み込んでください。サンプルで例データを読み込めます。設定でstruct名とパッケージ名を設定してください。

2

生成されたstructを確認

右パネルに生成されたGo structが表示されます。ネストオブジェクトはネストまたは別structに。配列は[]Typeになります。無効なJSONの場合は先にJSONフォーマッターまたはJSONバリデーターで修正してください。

3

コピーまたはダウンロード

コピーでクリップボードに、ダウンロード.goファイルとして保存できます。

JSONをGoの例

JSONオブジェクトからGo structを生成する例です。

例:加入者レコード

JSON入力:

入力

生成されたGo出力:

出力

JSONをGoが役立つ場面

API統合時に必要です。サンプルレスポンスを貼り付けるとencoding/jsonで使える型付きstructが得られます。

設定ファイルもよくあるケースです。2つのJSONをマージするにはJSONマージツールを使用してください。

MongoDB、Firestore、CouchDBのデータベースエクスポートは大きなJSONです。ここで処理すると構造を理解し、Go structを生成できます。

よくある質問

JSONからGo structを自動生成するには?

JSONをこのツールに貼り付けると、すぐにGo structが生成されます。JSONタグを有効にしてフィールド名がJSONキーに正しくマッピングされるようにしてください。出力をGoプロジェクトにコピーしてjson.Unmarshal()で使えます。

Go structにJSONタグが必要な理由は?

Go structのフィールド名はJSONのためにエクスポート(大文字)が必要です。JSONはcamelCaseやsnake_caseをよく使います。json:"fieldName"タグはencoding/jsonにどのJSONキーがどのstructフィールドに対応するかを伝えます。タグなしではjson.Unmarshalが大文字小文字を無視したマッチングを行い、フィールドを見逃す可能性があります。

データはどこかに送信されますか?

いいえ。すべてブラウザで実行されます — JSONがマシンの外に出ることはありません。ブラウザのネットワークタブで確認できます。本番データでも安全です。

omitemptyはどうすれば?

空のときに出力したくないフィールドにはjson:"name,omitempty"を追加してください。ジェネレーターはデフォルトでは追加しません。ユースケースによって変わるので、生成後に編集してください。

structフィールドにポインタを使うのはいつ?

オプショナルやnullableフィールドには*Typeを使います。ポインタがあればJSONフィールドが欠落した場合にnilになり、確認できます。ポインタなしでは欠落フィールドがゼロ値になり、欠落なのか空なのか区別できません。

関連ツール

Go JSON処理はencoding/jsonを参照。JSONはJSON仕様RFC 8259を参照。