生成・コード構造ツール

JSON → Pythonデータクラス

JSONサンプルからPython 3.10以降のdataclassコードを生成できます。

JSON入力

生成コード

Pythonのdataclassを生成。ユニオン型、省略時の既定値、入れ子、予約語に対応します。

JSONとPythonコードはローカルで推論・表示するだけです。アップロードやコードの実行、ブラウザーの永続ストレージへの保存は行いません。

このツールについて

Python標準ライブラリを使い、型付きデータクラスの下書きを出力します。フィールドの構造を推論しますが、JSON辞書からdataclassインスタンスへの再帰的な変換は行いません。読み込みや検証の処理は用途に合わせて追加してください。

使い方

  1. JSONを貼り付けます。複数のオブジェクトサンプルから、省略される可能性のあるフィールドを判定します。
  2. ルートデータクラス名を設定します。
  3. 「変換」を押し、入れ子の型、ユニオン型、必須フィールドが既定値付きフィールドより先にあることを確認します。
  4. コードをコピーするかPythonファイルをダウンロードし、Python 3.10以降で使用して逆シリアライズ処理を追加します。

使用例

  • [{"id":1,"name":"Tom"},{"id":2}]:idは必須で、nameはstr | None = Noneと表せます。
  • {"matrix":[[1,2],[3,4]],"items":[]}:それぞれlist[list[int]]とlist[Any]になります。
  • {"class":"A","first-name":"Tom"}:有効な名前に変換し、コメントで元のキーを記録します。

型の対応規則

文字列はstr、整数はint、小数や混在する数値はfloat、真偽値はbool、配列はlist[T]になります。異なる要素型はユニオンにでき、nullのみや不明な構造にはAny/Noneで保守的に対応します。省略可能なフィールドには既定値= Noneを付け、必須フィールドの後に並べます。明示的にnullを許す必須フィールドを、自動で省略可能にはしません。入れ子のデータクラスは依存順に宣言するか、明示的な前方参照を使い、空オブジェクトには有効な空クラスを生成します。フィールドは有効なsnake_caseとし、予約語には接尾辞を付けて名前の衝突を解消します。改名コメントはJSONの自動マッピングではありません。入力・出力はそれぞれ1 MiB、入れ子64階層、100000ノード、統合フィールド5000個、型256個までです。安全な整数範囲外、非有限値、アンダーフローで0になる数値はエラーにし、その他の小数はブラウザーの浮動小数点精度に基づきます。

主な用途

  • Pythonのデータ処理スクリプト用に構造モデルを作成する。
  • APIサンプルを入れ子のデータクラスに整理する。
  • 必須、省略可能、明示的なnullの違いを確認する。

プライバシー

JSONとPythonコードはローカルで推論・表示するだけです。アップロードやコードの実行、ブラウザーの永続ストレージへの保存は行いません。

結果を残す場合は、ページを離れる前にコピーまたはダウンロードしてください。

よくある質問

dataclassとは何ですか?

Python標準ライブラリのデータクラス用デコレーターです。フィールド宣言から初期化などの一般的なメソッドを生成できます。

対応するPythonのバージョンは?

出力の対象はPython 3.10以降で、list[T]やA | Noneなどの型表記を使います。

既定値付きフィールドを後に置くのはなぜですか?

通常のdataclassでは、既定値のあるフィールドを既定値のないフィールドより先に置けません。初期化引数の順序エラーになる場合があります。

Pythonの予約語はどう扱いますか?

例えばclassをclass_などの有効な名前に変えます。元のJSONキーをコメントに残し、改名による衝突も解消します。

dataclassは元のJSONフィールド名に自動で戻しますか?

いいえ。標準のdataclassにJSONキーのマッピングや再帰的な逆シリアライズ機能はありません。改名したフィールドの変換処理はアプリケーション側で用意してください。

開発者ツール一覧に戻る