JSON 转 Pydantic 模型生成器
从 JSON 示例即时生成 Pydantic v2 模型类,就在你的浏览器中。你的 JSON 留在你的设备上。
你的 JSON 完全在你的浏览器中被解析并转换为 Pydantic 模型,因此它留在你的设备上,不会上传到任何服务器。
需要 Go、Rust 或 TypeScript 类型?试试 JSON 转代码。
关于 JSON 转 Pydantic
这款 json 转 pydantic 生成器能在几秒内将示例 JSON 对象或数组转为可直接使用的 Pydantic v2 模型类。粘贴真实的 API 响应,它会推断每个字段的类型 str、int、float 和 bool,将可空字段标记为 Optional,把数组统一为 list[...] 类型,并将每个嵌套对象提升为各自的、以名称引用的 BaseModel。不是合法 Python 标识符的键会通过 Field(alias=...) 保留,使模型仍能解析你的原始载荷。它专为 Python 和 FastAPI 开发者而打造 —— 他们在搭建类型化客户端时,宁愿从 json 生成 pydantic 模型,也不愿手写它们。一切都在你的浏览器本地运行,因此你粘贴的 JSON 在你的设备上处理,不会上传到任何服务器。
功能特性
- 从任意 JSON 对象或数组生成 Pydantic v2 BaseModel 类
- 从你的示例值推断 str、int、float 和 bool
- 将可空及有时缺失的字段标记为 Optional[...]
- 将嵌套对象提升为各自命名的 BaseModel 类
- 将数组统一为 list[...] 类型,空数组变成 list[Any]
- 通过 Field(alias=...) 保留非法的 Python 键,使解析仍然有效
- 为 BaseModel、Field、Optional 和 Any 生成整洁的导入
- 复制结果或将其下载为 .py 文件
如何使用 JSON 转 Pydantic
- 将你的 JSON 对象或数组粘贴到输入框中。
- 将「根模型名」设为匹配你的模式,或保留为 Model。
- 在输出面板中查看生成的 Pydantic 类。
- 复制结果或将其下载为 .py 文件。
示例
输入
{ "id": 1, "name": "Ada", "address": { "city": "London" } }
输出
from pydantic import BaseModel
class Address(BaseModel):
city: str
class Model(BaseModel):
id: int
name: str
address: Address
嵌套对象会成为各自的 BaseModel,根类排在最后。
常见错误与故障排除
- 输出显示一个带行号和列号的「Invalid」错误。 — 该 JSON 存在语法问题,例如末尾逗号、单引号或未加引号的键。在报告的行号与列号处修复它,模型便会重新生成。
- 某个字段输出为 Optional[Any] 而非具体类型。 — 该键的每个示例值都是 null,因此无法推断出具体类型。请为该字段提供一个含真实值的示例。
- 某个字段使用了带重命名属性的 Field(alias=...)。 — 该键不是合法的 Python 标识符或是保留字,因此它会以一个安全的属性名暴露,而原始键则被保留为别名。
- 某个列表字段输出为 list[Any]。 — 你示例中的数组为空,因此无法推断出元素类型。请至少包含一个有代表性的元素,以获得带类型的列表。
常见问题
- 它生成的是 Pydantic v2 模型吗?
- 是的。输出面向 Pydantic v2 语法:每个模型是一个继承 BaseModel 的类,带有注解的字段,并在 JSON 键不是合法 Python 标识符处使用 Field(alias=...)。
- 嵌套对象是如何处理的?
- 每个嵌套对象会成为各自的 BaseModel 类,以其所属键采用 PascalCase 命名,父级通过类型引用它。各类按依赖顺序生成,根模型排在最后。
- 它如何将 JSON 类型映射到 Python 类型?
- 字符串变成 str,整数变成 int,小数变成 float,布尔值变成 bool,null 产生 Optional,数组变成带统一元素类型的 list[...],对象变成嵌套的 BaseModel。
- 遇到不是合法 Python 名称的键会怎样?
- 像 first-name 或 2fa 这样的键,或像 class 这样的保留字,会以一个安全的 snake_case 属性暴露,并用 Field(alias="...") 保留原始键,使模型仍能解析你的载荷。
- 数组和空数组是如何被转换的?
- 数组会使用其元素的统一类型变成 list[...],对于对象数组则包含一个嵌套的 BaseModel。空数组没有可推断的元素类型,因此会变成 list[Any]。
- 生成 Pydantic 模型时,我的 JSON 会被发送到任何地方吗?
- 不会。JSON 转 Pydantic 的转换完全在你的浏览器中运行,因此你粘贴的数据在本地处理,绝不离开你的设备。
相关工具
全部 ArrayKit 工具