开发者 / 类型
JSON转Python转换器
将JSON示例转换为Python dataclasses、TypedDict定义或Pydantic模型,并支持嵌套类、可选和可空字段,以及snake_case名称。
JSON转Python转换器: 转换器会读取示例的结构:每个对象都会变成一个类,数组会变成list[...],并合并数组中的对象。因此,某些记录中缺少的键会变为可选键,有时为null的键会变为“| None”。不符合Python名称规则的键会转换为snake_case;Pydantic模型会将原始键保留为别名,TypedDict则会切换为函数式形式。多个复杂示例的输出已在Python 3.13中运行测试,并使用Pydantic对示例进行了验证。 完全在浏览器中本地运行,文件不会上传到服务器。
- 类别
- 开发者工具
- 使用次数
- 在浏览器中
- 费用
- 免费·无需注册
- 可用性
- 可直接使用
完全在浏览器中运行
Python
from __future__ import annotations
from dataclasses import dataclass
@dataclass
class Address:
city: str
zip_code: str
@dataclass
class User:
id: int
user_name: str
avatar_url: str
score: float
tags: list[str]
address: Address
manager_id: int | None
nickname: str | None = None
UserList = list[User]
适用于Python 3.10或更高版本。部分对象中缺失的键会变为可选项;有时为null的键会变为“| None”。数据类不会将重命名的键映射回JSON,因此当键名不是有效的Python名称时,请使用Pydantic,它会添加别名。
从类型到验证
仅靠类型提示无法在运行时检查数据:无论注解如何,json.loads都会返回普通的字典和列表。Pydantic模型会在解析数据时验证并转换数据,使用Model.model_validate(data),并报告所有不符合要求的字段。
如需查看其他语言对同一示例的处理,请参阅JSON到TypeScript和JSON到Go;如需语言无关的契约,请参阅JSON到JSON Schema。
获取合适的示例
请粘贴多条记录,而不是一条,并包含带有可选字段或空字段的记录,这样转换器才能判断哪些键始终存在。始终为null或空数组的值会转换为Any,需要手动补充。
使用方法
- 粘贴JSON示例,最好是包含多个典型记录的数组。
- 选择dataclasses、TypedDict或Pydantic,并为顶层类型命名。
- 将生成的类复制到你的项目中。
隐私与限制
JSON会在你的浏览器中转换,绝不会上传。
相关工具
常见问题
我应该使用哪种风格?
如果要验证和解析来自API的数据,请使用Pydantic;如果要对传递普通dict的代码进行类型检查,请使用TypedDict;如果要创建简单的内部对象,请使用dataclasses。
代码需要哪个Python版本?
需要Python 3.10或更高版本,因为代码使用了X | None语法;TypedDict中的NotRequired需要Python 3.11,较旧版本则需要使用typing_extensions。
为什么有些字段的类型是Any?
始终为null的键或空数组无法提供类型线索;请根据API文档将Any替换为实际类型。
免费工具·使用在浏览器中次·无需账户