開發者 / 類型
JSON 轉 Python 轉換器
將JSON範例轉成Python dataclasses、TypedDict定義或Pydantic模型,支援巢狀類別、可選與可為null的欄位,以及snake_case名稱。
JSON 轉 Python 轉換器: 轉換器會讀取範例的結構:每個物件會變成一個類別,陣列會變成list[...],而陣列中的物件會合併,因此某個鍵在部分記錄中缺少時會變成可選欄位,某個鍵有時為null時則會變成「| None」。不符合有效Python名稱的鍵會轉成snake_case;Pydantic模型會將原始鍵保留為別名,而TypedDict則會改用函式形式。多個較複雜範例的輸出已在Python 3.13中執行,並由Pydantic根據輸出驗證範例。 全程在瀏覽器中於本機執行,檔案不會上傳至伺服器。
- 分類
- 開發者工具
- 使用次數
- 在瀏覽器中
- 費用
- 免費・免註冊
- 可用狀態
- 可立即使用
全程在瀏覽器中執行
Python
from __future__ import annotations
from dataclasses import dataclass
@dataclass
class Address:
city: str
zip_code: str
@dataclass
class User:
id: int
user_name: str
avatar_url: str
score: float
tags: list[str]
address: Address
manager_id: int | None
nickname: str | None = None
UserList = list[User]
適用於 Python 3.10 或更新版本。部分物件中缺少的鍵會變成選用;有時為 null 的鍵會變成“| None”。資料類別不會將重新命名的鍵對應回 JSON,因此當鍵不是有效的 Python 名稱時,請使用會加入別名的 Pydantic。
從型別到驗證
單靠型別提示不會在執行時檢查資料:無論註解怎麼寫,json.loads都只會提供一般的dict和list。Pydantic模型會在解析資料時驗證並轉換資料,使用Model.model_validate(data),並回報每個不符合的欄位。
如要查看其他語言的相同範例,請參閱JSON轉TypeScript和JSON轉Go;如要使用與語言無關的契約,請參閱JSON轉JSON Schema。
取得良好的範例
請貼上多筆資料,而不是只有一筆,並包含具有選用欄位或空欄位的資料,讓轉換器能判斷哪些鍵一律存在。永遠是null或空陣列的值會轉成Any,需手動補上型別。
使用方式
- 貼上JSON範例,最好使用包含數筆典型記錄的陣列。
- 選擇dataclasses、TypedDict或Pydantic,並命名頂層型別。
- 將產生的類別複製到您的專案中。
隱私與限制
JSON會在您的瀏覽器中轉換,絕不會上傳。
相關工具
常見問題
我應該使用哪種形式?
如果要驗證及解析來自API的資料,請使用Pydantic;如果程式會傳遞一般dict並需要進行型別檢查,請使用TypedDict;如果要建立自己管理的簡單內部物件,請使用dataclasses。
程式碼需要哪個Python版本?
需要Python 3.10或更新版本,才能使用X | None語法;TypedDict中的NotRequired需要3.11,較舊版本則需使用typing_extensions。
為什麼有些欄位的型別是Any?
永遠為null的鍵或空陣列無法提供型別線索,請根據API文件中的實際型別,將Any替換掉。
免費工具・使用在瀏覽器中次・免註冊