JSON 转 Python 类
JSON 转 Python 实体类工具,生成 @dataclass 类定义,支持选择 Python 3.6–3.10 版本语法(类型注解、泛型内置类型、| 联合类型),字段名自动转为蛇形。生成在浏览器本地完成,脚本与服务端开发都适用。
怎么使用
- 1
粘贴 JSON
粘贴 JSON 数据,嵌套对象生成关联 dataclass,列表生成 List[T] 注解。
- 2
选择 Python 版本
3.10 使用 X | None 联合语法,旧版本自动切换为 Optional/Union 写法。
- 3
复制 Python 代码
勾选「仅类型」得到纯 dataclass,复制后配合 dataclasses.asdict 使用。
功能特点
dataclass 原生方案
基于标准库 dataclasses,零第三方依赖,Python 3.7+ 直接可用。
版本自适应语法
3.9 用内置 list[int],3.10 用 int | None,低版本自动回退 typing.List / Optional。
蛇形命名转换
camelCase / kebab-case 键自动转为 Python 惯例的 snake_case 字段。
可选完整解析代码
不勾选「仅类型」时附带 from_dict / to_dict 辅助方法,嵌套对象自动构造。
常见错误与排查
- ! Python 类型注解不做运行时强制校验,脏数据仍能赋值;需要校验请改用 Pydantic 模型。
- ! None 字段会生成 Optional[T],反序列化前注意判空。
- ! 字典形态(键不固定)不适合生成 dataclass,应保留 dict[str, T] 手工处理。
常见问题
支持 Pydantic 吗?
当前生成标准库 dataclass(Pydantic v2 也支持 dataclass)。纯 dataclass 无额外依赖;若要 BaseModel 的运行时校验,可把 @dataclass 替换为 pydantic.dataclasses.dataclass。
Python 版本选项影响什么?
3.10 允许 int | None;3.9 起 list/dict 可直接做泛型;更早版本输出 typing.List、typing.Optional。按你项目的运行环境选择即可。
字段名为什么变成下划线风格?
PEP 8 推荐函数与变量使用 snake_case,工具自动完成转换并仅影响 Python 侧字段名;做 JSON 映射时辅助方法会按原键名读写。