データ

JSON 型定義ジェネレーター

JSON のサンプルを貼り付けると、使っている言語の型定義が手に入ります。TypeScript のインターフェースや Go の構造体から、Rust、Swift、Kotlin、Python、C# など二十以上の言語に対応します。データの構造を読み取り、各フィールドの型を推論し、ネストしたオブジェクトや配列、省略可能なキーを処理して、そのままコードベースに貼れる整った宣言を出力します。入力と出力の両方が本物のコードエディターなので、大きなデータでも読みやすく、生成されたコードには構文ハイライトが付きます。すべてブラウザ内でローカルに動作するため、機密の API レスポンスが端末から外に出ることはありません。

  • JSON サンプルを二十以上の言語ですぐ使える型に変換
  • データの構造からネストしたオブジェクト、配列、省略可能フィールド、ユニオン型を推論
  • 対象言語とルート型名を選び、結果をワンクリックでコピーまたはダウンロード
  • パッケージ名、名前空間、シリアライズのフレームワークなど、その言語が実際に持つオプションを指定
  • 両側が構文ハイライト付きの本物のコードエディターで、大きな入出力も快適
  • 完全にブラウザ内で動作し、プライベートな API レスポンスをアップロードしません
8%
型エンジンを読み込み中
8%
コード生成エンジンは一度だけ読み込まれ、その後は即座に変換できます。
クイック操作

概要

API レスポンスに合わせて型を手書きするのは遅く、間違いも起きやすい作業です。これは JSON を読み取って宣言を生成するので、型の層が記述対象のデータに忠実に保たれます。

  1. 01

    多くの対象言語

    一つの JSON サンプルから TypeScript、Go、Rust、Swift、Kotlin、Java、C#、Python、Dart、Ruby、PHP などの型を生成します。

  2. 02

    構造の推論

    ネストしたオブジェクトはネストした型になり、配列は要素の型を推論し、現れたり消えたりするフィールドは省略可能になります。

  3. 03

    妥当な型の判定

    数値、真偽値、文字列、null、混在した値は最も近い型に対応づけられ、フィールドが複数の形を持つ場合はユニオン型になります。

  4. 04

    両側とも本物のエディター

    入力も出力も構文ハイライト、折りたたみ、なめらかなスクロールを備えたコードエディターで、大きなレスポンスでも読みやすく保てます。

  5. 05

    整った型のみの出力

    結果を素の宣言だけに保つことも、エンジンが生成できる補助コードを含めることもでき、プロジェクトの必要に応じて選べます。

  6. 06

    言語に寄り添ったオプション

    Go のパッケージ名、Java と Kotlin のパッケージ、C# の名前空間と JSON フレームワーク、Rust の derive、Swift のアクセスレベルなど、その言語が本当に持つものだけを並べます。

  7. 07

    ローカルでプライベート

    エンジンは一度読み込めばブラウザ内で動作するため、内部や未公開の API の JSON が端末から出ることはありません。

使い方

生の API レスポンスから、エディターが理解できる型宣言まで、数秒で進めます。

  1. 01

    代表的な JSON サンプルを入力エディターに貼り付けるか、サンプルを読み込んで動作を確認します。

  2. 02

    TypeScript、Go、Rust など、対象の言語を選びます。

  3. 03

    ルート型名を設定し、最上位の型がコード内で自然に読めるようにします。

  4. 04

    「オプション」を開いてパッケージ名や名前空間を設定し、JSON フレームワークを選び、必要なら日時の推論を切ります。

  5. 05

    出力エディターで生成された型を確認し、あるフィールドを省略可能にすべきなら JSON を調整します。

  6. 06

    結果をコピーするか、ルート型名を付けたファイルとしてダウンロードします。

詳細

型ジェネレーターは出力が正しく、すぐ貼れて初めて役立ちます。そこでこのツールは、言語をまたいだ忠実な推論と整った宣言に重点を置いています。

  • 一つの JSON サンプルから二十以上の対象言語に対応
  • ネストしたオブジェクト型、配列の要素型、省略可能フィールドを自動推論
  • フィールドがサンプル内で複数の型を持つ場合にユニオン型を検出
  • ルート型に名前を付けて、最上位の宣言をコードに合わせられる
  • 余分な補助コードのない、整った宣言だけの型のみモードを用意
  • JSON 入力と、選んだ言語の生成結果の両方をハイライト
  • 大きなデータをあふれさせず、スクロールと折りたたみができるエディターで処理
  • 無効な JSON を明確に知らせ、生成前に入力を直せる
  • 生成エンジンを進度表示付きで一度だけ読み込み、その後は即時
  • 各対象言語が実際に備えるレンダラーオプションを、quicktype の CLI と同じ名前で提供
  • 日時・辞書・列挙型の推論の切り替えと、全フィールドを省略可能にする指定
  • ディスク上の JSON ファイルを開き、生成したコードを正しい拡張子でダウンロード
  • 選んだ対象言語を記憶してアドレスバーに反映し、共有したリンクは同じ言語で開く
  • 完全にブラウザ内で動作し、機密のレスポンスをアップロードしません

活用シーン

実際の作業の多くは、スキーマではなく JSON レスポンスから始まります。そのレスポンスから型を生成すると、コードがデータと揃い、丁寧な書き写しの手間を大きく減らせます。

  1. API レスポンスの型付け

    サンプルレスポンスをインターフェースや構造体に変え、そのエンドポイントへの呼び出しをコンパイラに検査させます。

  2. 言語をまたぐクライアント

    同じ JSON からモバイルアプリとバックエンドのモデルを生成し、Swift、Kotlin、Go を揃えて保ちます。

  3. コードベースへの慣れ

    見慣れないデータを貼り付け、コードを書く前にその構造、名前、ネストを素早く把握します。

  4. 設定やフィクスチャの型

    設定ファイルやテストフィクスチャの型を作り、構造の変更が型エラーとして表に出るようにします。

  5. データモデルの試作

    JSON の形を手で書き、モデルクラスの初版を生成して、そこから組み立て始めます。

  6. 型なしコードへの後付け

    すでに扱っているレスポンスから宣言を生成し、JavaScript や Python のプロジェクトに型の層を足します。

関連情報

型ではなく、同じデータの別の形が必要なら、 JSON コンバーターは JSON を YAML や CSV などに変換でき、 JSON フォーマッターは生成前に JSON を整えて検証できます。

対応言語と生成される型

一つの JSON サンプルが、各対象言語で自然な型に対応づけられます。プロジェクトで使う言語を選べば、命名、省略可能性、シリアライズの慣習に沿った出力になります。

  1. TypeScript

    省略可能プロパティやユニオン型を含むインターフェースと型エイリアスを生成します。Web や Node で fetch や API レスポンスに型を付ける既定の選択肢です。

  2. TypeScript と Zod

    実行時にデータを検証する Zod スキーマを生成し、各スキーマから静的型を推論するため、パースと型が揃ったままになります。

  3. Go

    json タグと対応するフィールド型を備えた構造体を生成し、encoding/json でそのままマーシャル・アンマーシャルできます。

  4. Rust

    serde の derive 属性付き構造体を生成し、serde_json で JSON と型を相互変換できます。

  5. Python

    型チェッカーやエディターが認識する注釈付きクラスを生成し、dataclass やモデルオブジェクトの土台になります。

  6. Java

    型付きフィールドとアクセサーを持つクラスを生成し、Jackson や Gson などの JSON バインディングに素直に対応します。

  7. Kotlin

    data class を生成し、省略可能なフィールドは null 許容型で表します。Android やサーバーサイドの Kotlin にそのまま使えます。「型のみ」を外せば、オプションで kotlinx.serialization、Jackson、Klaxon から選べます。

  8. Swift

    Codable 構造体を生成し、iOS や macOS アプリで JSONDecoder と JSONEncoder により JSON をデコード・エンコードできます。

  9. C#

    .NET 向けに型付きプロパティを持つクラスを生成します。「型のみ」を外し、オプションで Json.NET か System.Text.Json を選ぶと、それぞれに合う属性とコンバーターが付きます。

  10. C++ と Objective-C

    データの形を表す C++ 構造体と Objective-C クラスを生成し、ネイティブやクロスプラットフォームのコードに使えます。

  11. Dart

    Flutter と Dart 向けに型付きフィールドのクラスを生成し、モバイルアプリの JSON シリアライズの出発点になります。

  12. Ruby・PHP・Scala

    JSON 構造に対応する Ruby と PHP のクラス、Scala の case class を生成し、バックエンドやスクリプト作業に使えます。

  13. Elm・Haskell・Crystal

    関数型・システム系言語向けに、サンプルから推論したフィールド型で Elm と Haskell のレコード、Crystal の型を生成します。

  14. 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 がサーバーに送られることはありません。

なぜ初回だけ少し読み込みが入るのですか?

コード生成エンジンはやや大きなライブラリのため、進度表示付きで一度だけ読み込みます。以降の変換は即時で、再度の読み込みはありません。

どのフィールドを省略可能と判断しますか?

サンプルの一部の項目で欠けているフィールドが省略可能として扱われます。頼りにするフィールドが誤って省略可能にならないよう、完全なサンプルを与えてください。

型のみオプションは何をしますか?

出力を素の型宣言だけに保ちます。オフにすると、対応言語ではパースやシリアライズなどの補助コードもエンジンが生成します。

パッケージ名や名前空間は設定できますか?

できます。「オプション」を開くと、選択中の言語が対応するものが並びます。Go のパッケージ名、Java と Kotlin のパッケージ、C# の名前空間と JSON フレームワーク、Rust の derive、Swift のアクセスレベルなどです。名前は quicktype の CLI フラグと同じです。

日付が文字列ではなく日付型になるのはなぜですか?

エンジンが ISO 形式のタイムスタンプを認識し、その言語の日付型に対応づけるためです。文字列のままにしたい場合は「オプション」で日時の推論を切ってください。辞書や列挙型の推論も同じ場所で切れます。

オブジェクトが混在した配列も扱えますか?

はい。配列の要素が異なる場合、エンジンは合成型やユニオン型を推論し、サンプルで見たすべての項目を結果が記述できるようにします。

なぜ一部のフィールドは緩い型なのですか?

緩い型やユニオン型は、そのフィールドがサンプル内で複数の形を持っていたことを意味し、源流で整理する価値のある不整合を指していることが多いです。

JSON を検証しますか?

JSON を解析し、無効ならエラーを知らせますが、必須フィールド、値の範囲、文字列形式といったスキーマ規則は強制しません。

関連ツール

型の生成は JSON を扱う一つの段階にすぎません。同じデータを別の形式にしたいときや、先に整えたいときは、残りのデータツールがここから引き継ぎます。