JSON to Python Dataclass

JSONからPythonのdataclassを自動生成します。Optional型・frozen・slots・from_dict()対応。

入力データはブラウザ内で処理されます
データはサーバーへ送信されません

変換ツール

ルートクラス名
インデント:

またはファイルをドラッグ&ドロップ

JSON to Python Dataclass 変換ツールとは?

APIレスポンスや設定ファイルのJSONから、Pythonの @dataclass 定義を自動生成するツールです。

ネストしたオブジェクトは個別のdataclassとして展開され、配列は List[T] として型付けされます。from __future__ import annotations による前方参照、Optional 型、frozenslots オプション、from_dict() メソッドなど、実務でよく使うパターンを網羅しています。

使い方

  1. 左側にJSONを貼り付けると、右側にPythonのdataclassが即座に生成されます。「サンプル」ボタンで動作を確認できます。
  2. 「ルートクラス名」に生成するクラスの名前を入力します(デフォルト: Root)。
  3. 「None を Optional[T] で表現」を有効にすると、null値のフィールドを `Optional[T] = None` として出力します。
  4. 「frozen=True」を有効にすると、`@dataclass(frozen=True)` でイミュータブルなデータクラスを生成します。
  5. 「slots=True」を有効にすると、`@dataclass(slots=True)` でスロットを使ったクラスを生成します(Python 3.10以上が必要)。
  6. 「from_dict() メソッドを生成」を有効にすると、辞書からインスタンスを生成する `from_dict()` クラスメソッドが追加されます。

よくある質問

ネストしたオブジェクトはどう変換されますか?

ネストしたオブジェクトは個別のdataclassとして自動生成され、親クラスのフィールドから前方参照(文字列アノテーション)として参照されます。`from __future__ import annotations` が先頭に付くため、そのまま使えます。

フィールド名はどう変換されますか?

JSONキーはPythonのスネークケース(snake_case)に自動変換されます。例えば `firstName` は `first_name` になります。

配列はどう変換されますか?

配列は `List[T]` 型として生成されます。オブジェクトの配列の場合は、すべての要素のキーをマージして1つのdataclassを生成し `List[クラス名]` として出力します。

null値のフィールドはどうなりますか?

null値のフィールドはデフォルト値 `None` を持つフィールドとして生成されます。Pythonの制約上、デフォルト値のないフィールドより後に配置されます。