生成与代码结构工具

JSON → Python Dataclass

根据 JSON 样本生成 Python 3.10+ dataclass 代码。

JSON Input

Generated Code

生成 Python dataclass,处理联合类型、可选默认值、嵌套结构与保留字。

JSON 输入与 Python 代码只在本地推断和显示,不上传、不运行代码,也不写入浏览器持久存储。

这个工具是什么

JSON → Python Dataclass 输出类型化数据类草稿,使用 Python 标准库。它推断字段结构,不自动把 JSON 字典递归构造为 dataclass 实例;生成后可根据应用需求编写加载和验证逻辑。

如何使用

  1. 粘贴 JSON,使用多个对象样本识别哪些字段可能缺失。
  2. 设置根数据类名称。
  3. 点击“转换”,检查嵌套类型、联合类型以及必填字段先于默认字段的顺序。
  4. 复制代码或下载 Python 文件,在 Python 3.10+ 中使用并补充反序列化逻辑。

使用示例

  • [{"id":1,"name":"Tom"},{"id":2}]:id 为必填字段,name 可写为 str | None = None。
  • {"matrix":[[1,2],[3,4]],"items":[]}:分别推断 list[list[int]] 与 list[Any]。
  • {"class":"A","first-name":"Tom"}:处理为合法名称,并用注释记录原 key。

类型映射规则

字符串为 str,整数为 int,小数与混合数字为 float,布尔值为 bool,数组为 list[T]。不同元素类型可组成联合;只有 null 或未知结构使用保守的 Any/None 表示。可缺失字段具有 = None 默认值并排在必填字段之后;显式 nullable 但必填的字段不自动变成缺失字段。嵌套数据类按依赖顺序声明或使用明确的前向引用,空对象输出有效空类。字段采用合法 snake_case,保留字加后缀并消除名称冲突;改名注释不等于自动 JSON 映射。 输入和输出各最多 1 MiB、嵌套最多 64 层、100000 个节点、5000 个合并字段、256 个类型。不安全整数、非有限数字或下溢为零的数值会报错;其他小数基于浏览器浮点精度。

常见用途

  • 为 Python 数据处理脚本建立结构模型。
  • 将接口样本整理为嵌套数据类。
  • 检查必填、可缺失和显式空值的区别。

隐私说明

JSON 输入与 Python 代码只在本地推断和显示,不上传、不运行代码,也不写入浏览器持久存储。

如需保留结果,请在离开页面前复制或下载到本地。

FAQ

Dataclass 是什么?

它是 Python 标准库提供的数据类装饰器,可根据字段声明生成初始化等常用方法。

需要什么 Python 版本?

输出面向 Python 3.10+,使用 list[T] 与 A | None 等现代类型写法。

为什么默认字段要放后面?

普通 dataclass 的有默认值字段不能先于无默认值字段,否则可能产生初始化参数顺序错误。

Python 保留字如何处理?

例如 class 会改为 class_ 等合法名称,同时保留原 JSON key 注释并处理改名冲突。

dataclass 会自动还原原 JSON 字段名吗?

不会。标准 dataclass 不自带 JSON key 映射或递归反序列化;改名后的字段需要应用提供相应转换逻辑。

返回开发者工具分类首页