このツールについて
Python標準ライブラリを使い、型付きデータクラスの下書きを出力します。フィールドの構造を推論しますが、JSON辞書からdataclassインスタンスへの再帰的な変換は行いません。読み込みや検証の処理は用途に合わせて追加してください。
使い方
- JSONを貼り付けます。複数のオブジェクトサンプルから、省略される可能性のあるフィールドを判定します。
- ルートデータクラス名を設定します。
- 「変換」を押し、入れ子の型、ユニオン型、必須フィールドが既定値付きフィールドより先にあることを確認します。
- コードをコピーするか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キーのマッピングや再帰的な逆シリアライズ機能はありません。改名したフィールドの変換処理はアプリケーション側で用意してください。