開發者 / 類型

JSON 轉 Python 轉換器

將JSON範例轉成Python dataclasses、TypedDict定義或Pydantic模型,支援巢狀類別、可選與可為null的欄位,以及snake_case名稱。

JSON 轉 Python 轉換器: 轉換器會讀取範例的結構:每個物件會變成一個類別,陣列會變成list[...],而陣列中的物件會合併,因此某個鍵在部分記錄中缺少時會變成可選欄位,某個鍵有時為null時則會變成「| None」。不符合有效Python名稱的鍵會轉成snake_case;Pydantic模型會將原始鍵保留為別名,而TypedDict則會改用函式形式。多個較複雜範例的輸出已在Python 3.13中執行,並由Pydantic根據輸出驗證範例。 全程在瀏覽器中於本機執行,檔案不會上傳至伺服器。

使用次數
在瀏覽器中
費用
免費・免註冊
可用狀態
可立即使用
JSON 轉 Python本機處理

全程在瀏覽器中執行

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,需手動補上型別。

使用方式

  1. 貼上JSON範例,最好使用包含數筆典型記錄的陣列。
  2. 選擇dataclasses、TypedDict或Pydantic,並命名頂層型別。
  3. 將產生的類別複製到您的專案中。

隱私與限制

JSON會在您的瀏覽器中轉換,絕不會上傳。

相關工具

常見問題

我應該使用哪種形式?

如果要驗證及解析來自API的資料,請使用Pydantic;如果程式會傳遞一般dict並需要進行型別檢查,請使用TypedDict;如果要建立自己管理的簡單內部物件,請使用dataclasses。

程式碼需要哪個Python版本?

需要Python 3.10或更新版本,才能使用X | None語法;TypedDict中的NotRequired需要3.11,較舊版本則需使用typing_extensions。

為什麼有些欄位的型別是Any?

永遠為null的鍵或空陣列無法提供型別線索,請根據API文件中的實際型別,將Any替換掉。

免費工具・使用在瀏覽器中次・免註冊