JSON 转 Python Dataclass

即时从 JSON 生成 Python dataclass,支持 @dataclass、Pydantic v2 BaseModel 和 TypedDict,处理嵌套对象、数组、可选字段和自定义根类名。免费,在浏览器中运行。

100% 浏览器端运行 数据不离开你的设备 免费 · 无需注册
模式
JSON 输入
Python 输出

使用方法

  1. 将 JSON 粘贴或输入到左侧面板,工具会实时验证。
  2. 可选设置根类名称(默认:Root)。
  3. 选择输出模式:@dataclassPydantic v2TypedDict
  4. 点击生成 Python,或等待实时转换结果。
  5. 点击复制将输出复制到剪贴板,或点击下载 .py 保存为文件。

类型映射

  • nullOptional[Any] = None
  • 字符串 → str
  • 整数 → int
  • 浮点数 → float
  • 布尔值 → bool
  • 数组 → List[T]
  • 混合数组 → List[Union[T1, T2]]
  • 嵌套对象 → 独立类

示例

给定如下 JSON:

{"user": {"first_name": "Alice", "age": 30}, "tags": ["admin"], "note": null}

@dataclass 模式下生成:

from dataclasses import dataclass
from typing import Any, List, Optional

@dataclass
class User:
    first_name: str
    age: int

@dataclass
class Root:
    user: User
    tags: List[str]
    note: Optional[Any] = None

FAQ

这个工具生成什么?

从 JSON 生成 Python 类定义,可选标准 @dataclass(stdlib)、Pydantic v2 BaseModel 或 TypedDict。每个嵌套对象都会成为独立的命名类。

支持哪些输出模式?

三种模式:@dataclass(Python 标准库,默认)、Pydantic v2 BaseModel、TypedDict(Python 3.8+)。

JSON 类型如何映射到 Python 类型?

string→str、integer→int、float→float、boolean→bool、null→Optional[Any]、array→List[T]、嵌套对象→独立类。

何时字段标记为 Optional?

当 JSON 样本中字段值为 null,或在合并数组对象时某些对象中字段缺失,该字段被标记为 Optional[T] = None。

嵌套对象如何处理?

每个嵌套对象提取为独立类,类名由字段名转换为 PascalCase。子类始终在父类之前定义,输出可直接使用。

我的数据会发送到服务器吗?

不会。整个转换在浏览器中运行,数据不会离开本机。