JSON 轉 Python
從 JSON 產生 Python dataclass、Pydantic 模型或 TypedDict
貼上 JSON 或載入範例,即可產生 Python 程式碼。
JSON 轉 Python 會產生什麼
JSON 轉 Python 會將 API 回應或任何 JSON 範例轉成 Python 型別定義。Dataclass 模式會產生 @dataclass 類別與 from_dict 類別方法,因為 Root(**data) 無法建立巢狀 dataclass,也無法對應重新命名的鍵。Pydantic v2 模式會產生 BaseModel 類別,只在名稱有變動時加入 Field(alias="original-key") 與 populate_by_name。TypedDict 模式保留原本的 JSON 鍵,遇到不是有效識別字的鍵時,改用函式式的 TypedDict("Name", {...}) 語法。
使用方式
- 1.貼上 JSON、上傳或拖放 .json 檔案,或載入其中一個範例。
- 2.設定根型別名稱。若 JSON 根值是物件陣列,此名稱用於元素型別,並另外加入 RootList 別名。
- 3.選擇 Dataclass、Pydantic v2 或 TypedDict,並決定屬性是否使用 snake_case。
- 4.閱讀輸出下方的提示,然後複製程式碼或下載 models.py。
型別如何推斷
- •會檢查陣列中的每個元素,而不只是第一個,同一陣列中的物件會合併。
- •部分物件缺少的鍵為選用;有時為 null 的鍵為可為 null。兩者分開處理。
- •同一位置出現 1 與 2.5 時會放寬為小數;其他混合情況會回報。
- •空陣列與一律為 null 的值沒有型別依據,因此使用泛用型別,並以提示說明原因。
- •型別對應:string → str、integer → int、decimal → float、boolean → bool、array → list[T]、object → 巢狀類別、unknown → Any、出現 null → T | None。
- •保留字會變成 class_,以數字開頭的鍵會加上 field_ 前綴,名稱衝突時加上 _2。
限制與隱私
範例只代表資料某一次的樣貌,並非完整的 API 合約。依賴程式碼前,請檢查選用欄位、泛用型別與數字寬度。輸入上限為 5 MB 與 256 層巢狀;從 2 MB 起,需按下「產生」按鈕才會產生。所有處理都在瀏覽器中執行,JSON 不會上傳。產生的程式碼使用 Python 3.10+ 的聯集語法;搭配 NotRequired 的 TypedDict 模式需要 Python 3.11 或 typing_extensions。
