JSON 型定義ジェネレーター
JSON のサンプルを貼り付けると、使っている言語の型定義が手に入ります。TypeScript のインターフェースや Go の構造体から、Rust、Swift、Kotlin、Python、C# など二十以上の言語に対応します。データの構造を読み取り、各フィールドの型を推論し、ネストしたオブジェクトや配列、省略可能なキーを処理して、そのままコードベースに貼れる整った宣言を出力します。入力と出力の両方が本物のコードエディターなので、大きなデータでも読みやすく、生成されたコードには構文ハイライトが付きます。すべてブラウザ内でローカルに動作するため、機密の API レスポンスが端末から外に出ることはありません。
- JSON サンプルを二十以上の言語ですぐ使える型に変換
- データの構造からネストしたオブジェクト、配列、省略可能フィールド、ユニオン型を推論
- 対象言語とルート型名を選び、結果をワンクリックでコピー
- 両側が構文ハイライト付きの本物のコードエディターで、大きな入出力も快適
- 完全にブラウザ内で動作し、プライベートな API レスポンスをアップロードしません
概要
API レスポンスに合わせて型を手書きするのは遅く、間違いも起きやすい作業です。これは JSON を読み取って宣言を生成するので、型の層が記述対象のデータに忠実に保たれます。
- 01
多くの対象言語
一つの JSON サンプルから TypeScript、Go、Rust、Swift、Kotlin、Java、C#、Python、Dart、Ruby、PHP などの型を生成します。
- 02
構造の推論
ネストしたオブジェクトはネストした型になり、配列は要素の型を推論し、現れたり消えたりするフィールドは省略可能になります。
- 03
妥当な型の判定
数値、真偽値、文字列、null、混在した値は最も近い型に対応づけられ、フィールドが複数の形を持つ場合はユニオン型になります。
- 04
両側とも本物のエディター
入力も出力も構文ハイライト、折りたたみ、なめらかなスクロールを備えたコードエディターで、大きなレスポンスでも読みやすく保てます。
- 05
整った型のみの出力
結果を素の宣言だけに保つことも、エンジンが生成できる補助コードを含めることもでき、プロジェクトの必要に応じて選べます。
- 06
ローカルでプライベート
エンジンは一度読み込めばブラウザ内で動作するため、内部や未公開の API の JSON が端末から出ることはありません。
使い方
生の API レスポンスから、エディターが理解できる型宣言まで、数秒で進めます。
- 01
代表的な JSON サンプルを入力エディターに貼り付けるか、サンプルを読み込んで動作を確認します。
- 02
TypeScript、Go、Rust など、対象の言語を選びます。
- 03
ルート型名を設定し、最上位の型がコード内で自然に読めるようにします。
- 04
出力エディターで生成された型を確認し、あるフィールドを省略可能にすべきなら JSON を調整します。
- 05
結果をコピーしてプロジェクトに貼り付けます。
詳細
型ジェネレーターは出力が正しく、すぐ貼れて初めて役立ちます。そこでこのツールは、言語をまたいだ忠実な推論と整った宣言に重点を置いています。
- 一つの JSON サンプルから二十以上の対象言語に対応
- ネストしたオブジェクト型、配列の要素型、省略可能フィールドを自動推論
- フィールドがサンプル内で複数の型を持つ場合にユニオン型を検出
- ルート型に名前を付けて、最上位の宣言をコードに合わせられる
- 余分な補助コードのない、整った宣言だけの型のみモードを用意
- JSON 入力と、選んだ言語の生成結果の両方をハイライト
- 大きなデータをあふれさせず、スクロールと折りたたみができるエディターで処理
- 無効な JSON を明確に知らせ、生成前に入力を直せる
- 生成エンジンを進度表示付きで一度だけ読み込み、その後は即時
- 完全にブラウザ内で動作し、機密のレスポンスをアップロードしません
活用シーン
実際の作業の多くは、スキーマではなく JSON レスポンスから始まります。そのレスポンスから型を生成すると、コードがデータと揃い、丁寧な書き写しの手間を大きく減らせます。
-
API レスポンスの型付け
サンプルレスポンスをインターフェースや構造体に変え、そのエンドポイントへの呼び出しをコンパイラに検査させます。
-
言語をまたぐクライアント
同じ JSON からモバイルアプリとバックエンドのモデルを生成し、Swift、Kotlin、Go を揃えて保ちます。
-
コードベースへの慣れ
見慣れないデータを貼り付け、コードを書く前にその構造、名前、ネストを素早く把握します。
-
設定やフィクスチャの型
設定ファイルやテストフィクスチャの型を作り、構造の変更が型エラーとして表に出るようにします。
-
データモデルの試作
JSON の形を手で書き、モデルクラスの初版を生成して、そこから組み立て始めます。
-
型なしコードへの後付け
すでに扱っているレスポンスから宣言を生成し、JavaScript や Python のプロジェクトに型の層を足します。
関連情報
型ではなく、同じデータの別の形が必要なら、 JSON コンバーター は JSON を YAML や CSV などに変換でき、 JSON フォーマッター は生成前に JSON を整えて検証できます。
対応言語と生成される型
一つの JSON サンプルが、各対象言語で自然な型に対応づけられます。プロジェクトで使う言語を選べば、命名、省略可能性、シリアライズの慣習に沿った出力になります。
-
TypeScript
省略可能プロパティやユニオン型を含むインターフェースと型エイリアスを生成します。Web や Node で fetch や API レスポンスに型を付ける既定の選択肢です。
-
TypeScript と Zod
実行時にデータを検証する Zod スキーマを生成し、各スキーマから静的型を推論するため、パースと型が揃ったままになります。
-
Go
json タグと対応するフィールド型を備えた構造体を生成し、encoding/json でそのままマーシャル・アンマーシャルできます。
-
Rust
serde の derive 属性付き構造体を生成し、serde_json で JSON と型を相互変換できます。
-
Python
型チェッカーやエディターが認識する注釈付きクラスを生成し、dataclass やモデルオブジェクトの土台になります。
-
Java
型付きフィールドとアクセサーを持つクラスを生成し、Jackson や Gson などの JSON バインディングに素直に対応します。
-
Kotlin
data class を生成し、省略可能なフィールドは null 許容型で表します。Android やサーバーの kotlinx.serialization や Moshi に適します。
-
Swift
Codable 構造体を生成し、iOS や macOS アプリで JSONDecoder と JSONEncoder により JSON をデコード・エンコードできます。
-
C#
型付きプロパティと属性を持つクラスを生成し、.NET で System.Text.Json や Json.NET と組み合わせて使えます。
-
C++ と Objective-C
データの形を表す C++ 構造体と Objective-C クラスを生成し、ネイティブやクロスプラットフォームのコードに使えます。
-
Dart
Flutter と Dart 向けに型付きフィールドのクラスを生成し、モバイルアプリの JSON シリアライズの出発点になります。
-
Ruby・PHP・Scala
JSON 構造に対応する Ruby と PHP のクラス、Scala の case class を生成し、バックエンドやスクリプト作業に使えます。
-
Elm・Haskell・Crystal
関数型・システム系言語向けに、サンプルから推論したフィールド型で Elm と Haskell のレコード、Crystal の型を生成します。
-
Flow と JSON Schema
JavaScript プロジェクト向けの Flow 型注釈と、検証や文書化に使える構造記述の JSON Schema を生成します。
使い方のヒント
推論の質はサンプル次第です。いくつかの習慣で、生成される型はより正確で保守しやすくなります。
- 省略可能なフィールドがすべて含まれた完全なサンプルを使い、実在するフィールドを欠落と誤判定させないようにします。
- リストのオブジェクトが変わりうるなら複数件を入れ、省略可能フィールドやユニオン型を検出できるようにします。
- ルート型には、それが表すエンドポイントやエンティティに合った分かりやすい名前を付けます。
- ユニオンや緩い型になったフィールドに注目します。整理する価値のある不整合なデータを指していることが多いです。
- 出力は出発点と捉え、生成されたネスト型を意味のある名前に変更します。
- API が変わったら手で型を直すのではなく再生成し、データとのずれを防ぎます。
- 共有するモデルファイルは型のみ出力を優先し、補助コードが必要なら別に置きます。
- ログやコピーした文字列由来の JSON は先に検証します。余分なカンマやコメントは解析に失敗します。
制限事項
このツールは例から型を推論するため、いくつかの限界に留意してください。
- 与えられたサンプルから構造を推論するため、サンプルにないフィールドは結果に現れません。
- 読み取るのは JSON であり JSON Schema や OpenAPI ではないため、形式、範囲、必須ルールは強制しません。
- ネスト型の推論名は生成されたもので、ドメインに合わせて改名すると役立つのが普通です。
- 数値は言語の慣例で型付けされ、API のように整数と浮動小数点を区別できないことがあります。
- JSON の日付は文字列なので、日付の扱いは言語に依存し、調整が必要な場合があります。
- 非常に大きなサンプルは大きな型ファイルを生むため、実際に使う部分に絞るのが最善です。
よくある質問
JSON から型を生成し、実際のプロジェクトで結果を使うときのよくある質問です。
どの言語を生成できますか?
TypeScript、Go、Rust、Swift、Kotlin、Java、C#、C++、Dart、Python、Ruby、PHP、Scala、Objective-C、Elm、Haskell、JavaScript、Flow、JSON Schema を含む二十以上です。
JSON はどこかにアップロードされますか?
いいえ。生成エンジンは初回にブラウザへ読み込まれ、その後はローカルで動作するため、JSON がサーバーに送られることはありません。
なぜ初回だけ少し読み込みが入るのですか?
コード生成エンジンはやや大きなライブラリのため、進度表示付きで一度だけ読み込みます。以降の変換は即時で、再度の読み込みはありません。
どのフィールドを省略可能と判断しますか?
サンプルの一部の項目で欠けているフィールドが省略可能として扱われます。頼りにするフィールドが誤って省略可能にならないよう、完全なサンプルを与えてください。
型のみオプションは何をしますか?
出力を素の型宣言だけに保ちます。オフにすると、対応言語ではパースやシリアライズなどの補助コードもエンジンが生成します。
オブジェクトが混在した配列も扱えますか?
はい。配列の要素が異なる場合、エンジンは合成型やユニオン型を推論し、サンプルで見たすべての項目を結果が記述できるようにします。
なぜ一部のフィールドは緩い型なのですか?
緩い型やユニオン型は、そのフィールドがサンプル内で複数の形を持っていたことを意味し、源流で整理する価値のある不整合を指していることが多いです。
JSON を検証しますか?
JSON を解析し、無効ならエラーを知らせますが、必須フィールド、値の範囲、文字列形式といったスキーマ規則は強制しません。
関連ツール
型の生成は JSON を扱う一つの段階にすぎません。同じデータを別の形式にしたいときや、先に整えたいときは、残りのデータツールがここから引き継ぎます。