JSON 转 Python 类

JSON 转 Python 实体类工具,生成 @dataclass 类定义,支持选择 Python 3.6–3.10 版本语法(类型注解、泛型内置类型、| 联合类型),字段名自动转为蛇形。生成在浏览器本地完成,脚本与服务端开发都适用。

在工作台中打开 本地处理 · 数据不上传

怎么使用

  1. 1

    粘贴 JSON

    粘贴 JSON 数据,嵌套对象生成关联 dataclass,列表生成 List[T] 注解。

  2. 2

    选择 Python 版本

    3.10 使用 X | None 联合语法,旧版本自动切换为 Optional/Union 写法。

  3. 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 映射时辅助方法会按原键名读写。

相关工具