JSON to Python

JSONを貼り付けて、完全なネスト型推論付きのPython dataclassまたはTypedDictを生成します。

このツールについて

JSON to Python変換ツールは、任意のJSONデータからPythonの dataclassまたはTypedDict定義を自動生成する無料のブラウザベース ツールです。APIレスポンス、設定ファイル、データベースレコード用の クラス定義を手動で記述する代わりに、生のJSONを貼り付けるだけで、 正確ですぐに使えるPythonコードがミリ秒で得られます。

変換ツールはJSON構造全体にわたって再帰的な型推論を行います。 プリミティブ値は対応するPython型(strintfloatboolNone)にマッピングされます。 ネストオブジェクトは独自の名前付きクラスとして抽出され、 フィールドキーからPascalCase変換で名前が生成されます。例えば、 billing_address フィールドは BillingAddress クラスを 生成します。配列は一貫した要素型を判定するために分析され、 混合型が含まれる場合は List[Any] として型付けされます。 空の配列もデータだけでは要素型を判定できないため List[Any] にデフォルト設定されます。

すべての処理はブラウザ内で完結します。JSONデータがマシンの外に 出ることはなく、サーバーへの通信、ログ記録、サードパーティの 分析も一切ありません。内部APIレスポンス、認証トークン、 シークレットを含む設定ファイルなどの機密ペイロードでも安全に 使用できます。

2つの出力モードから選択できます。dataclass モードは Python標準ライブラリの@dataclassデコレーターでクラスを 生成し、型アノテーションとオプションのfrom_dict / to_dict シリアライゼーションメソッドを含みます。 TypedDict モードはmypyやPyrightなどの静的分析ツール用の 辞書形状を記述する軽量な型定義を生成します。追加オプションで 全フィールドをOptional[T]でラップ(部分データ用)でき、 ルートクラス名も設定可能なため、生成コードはリネームなしで 直接コードベースに統合できます。

使い方

  1. 左側の JSON Input パネルにJSONを貼り付けまたは入力します。
  2. 右パネルにPython出力が入力に応じて自動更新されます。
  3. Root class 名でトップレベルのクラス名をカスタマイズします(デフォルトは "Root")。
  4. トグルボタンで dataclassTypedDict の出力モードを切り替えます。
  5. Optional を有効にすると全フィールドがOptional[T]でラップされ、from_dict / to_dict を有効にするとdataclassにシリアライゼーションメソッドが追加されます。
  6. Copy をクリックするか Ctrl+Shift+C で生成されたPythonコードをクリップボードにコピーします。Sample でサンプルJSONを読み込めます。

JSON to Pythonの人気サンプル

すべてのJSON to Pythonサンプルを見る →

よくある質問

dataclass出力とTypedDict出力の違いは何ですか?

Pythonのdataclassは、@dataclassデコレーターによって__init__、__repr__、__eq__などのダンダーメソッドが自動生成される完全なクラスです。動作やバリデーション、from_dict/to_dictのようなメソッドが必要なインスタンスに最適です。一方、TypedDictは辞書の形状を記述する型付け構造です。ランタイムで新しいクラスを作成せず、純粋に静的型チェックのために使用されます。実際のオブジェクトが必要な場合はdataclass、既存のdictデータにアノテーションを付けたい場合はTypedDictを選択してください。

ネストJSONオブジェクトはどのように処理されますか?

各ネストJSONオブジェクトは独自の名前付きPythonクラスとして抽出されます。クラス名はフィールドキーからPascalCase変換で生成されます。例えば、shipping_addressフィールドはShippingAddressクラスを生成します。名前の衝突が発生する場合(例:同じ名前に正規化される2つのフィールド)、数値サフィックスが自動追加されます(Address、Address2など)。任意の深さのネストに対応しています。

null値はどのように処理されますか?

JSONのnull値はデフォルトでOptional[None]にマッピングされ、nullだけでは実際の型を推論できないためOptional[Any]に簡約化されます。Optionalフィールドトグルを有効にすると、すべてのクラスの全フィールドがOptional[T]でラップされ、明示的にnull許容となります。部分データやフィールドが欠落する可能性があるAPIレスポンスに便利です。

混合型の配列はどうなりますか?

変換ツールはJSON配列のすべての要素を検査し、すべての異なるPython型を収集します。すべての要素が同じ型の場合、シンプルなList[T]アノテーション(例:List[str])が生成されます。複数の型が見つかった場合(文字列と数値の混合など)、フィールドはList[Any]として型付けされます。空の配列もList[Any]にデフォルト設定されます。

データは安全ですか?

はい。すべての型推論とコード生成はJavaScriptを使用してブラウザ内で完全に実行されます。サーバーへのデータ送信は一切ありません。ブラウザの開発者ツールのネットワークタブで確認できます。

from_dictとto_dictメソッドとは何ですか?

dataclass生成時にオプションで含められるメソッドです。from_dictはプレーンな辞書からインスタンスを構築する@classmethodで、to_dictはdataclassを辞書にシリアライズするインスタンスメソッドです。これらのメソッドはネストオブジェクトとリストを再帰的に処理するため、外部ライブラリなしでJSON互換のdictと型付きPythonオブジェクト間の変換が容易に行えます。

生成されたコードはPEP 8に準拠していますか?

はい。生成されたPythonコードはPEP 8規約に従っています:クラス名はPascalCase、フィールド名はsnake_case(JSONキーから保持)、インポートはファイル先頭にグループ化、クラス定義間には適切なスペーシングが維持されます。コードはプロジェクトに直接貼り付けて使用できます。

関連ツール