JSON 转 Python Dataclass
即时从 JSON 生成 Python dataclass,支持 @dataclass、Pydantic v2 BaseModel 和 TypedDict,处理嵌套对象、数组、可选字段和自定义根类名。免费,在浏览器中运行。
使用方法
- 将 JSON 粘贴或输入到左侧面板,工具会实时验证。
- 可选设置根类名称(默认:
Root)。 - 选择输出模式:@dataclass、Pydantic v2 或 TypedDict。
- 点击生成 Python,或等待实时转换结果。
- 点击复制将输出复制到剪贴板,或点击下载 .py 保存为文件。
类型映射
null→Optional[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。子类始终在父类之前定义,输出可直接使用。
我的数据会发送到服务器吗?
不会。整个转换在浏览器中运行,数据不会离开本机。