JSONをGoに変換
JSONをGo POJO構造体に変換してGo開発用に
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はサーバーに送信されません。
使い方
JSONを貼り付けまたはアップロード
JSONを左のエディタに貼り付けるか、アップロードでファイルを読み込んでください。サンプルで例データを読み込めます。設定でstruct名とパッケージ名を設定してください。
生成されたstructを確認
右パネルに生成されたGo structが表示されます。ネストオブジェクトはネストまたは別structに。配列は[]Typeになります。無効なJSONの場合は先にJSONフォーマッターまたはJSONバリデーターで修正してください。
コピーまたはダウンロード
コピーでクリップボードに、ダウンロードで.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を参照。