开发者 / 类型

JSON转Python转换器

将JSON示例转换为Python dataclasses、TypedDict定义或Pydantic模型,并支持嵌套类、可选和可空字段,以及snake_case名称。

JSON转Python转换器: 转换器会读取示例的结构:每个对象都会变成一个类,数组会变成list[...],并合并数组中的对象。因此,某些记录中缺少的键会变为可选键,有时为null的键会变为“| None”。不符合Python名称规则的键会转换为snake_case;Pydantic模型会将原始键保留为别名,TypedDict则会切换为函数式形式。多个复杂示例的输出已在Python 3.13中运行测试,并使用Pydantic对示例进行了验证。 完全在浏览器中本地运行,文件不会上传到服务器。

使用次数
在浏览器中
费用
免费·无需注册
可用性
可直接使用
JSON转Python本地处理

完全在浏览器中运行

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,需要手动补充。

使用方法

  1. 粘贴JSON示例,最好是包含多个典型记录的数组。
  2. 选择dataclasses、TypedDict或Pydantic,并为顶层类型命名。
  3. 将生成的类复制到你的项目中。

隐私与限制

JSON会在你的浏览器中转换,绝不会上传。

相关工具

常见问题

我应该使用哪种风格?

如果要验证和解析来自API的数据,请使用Pydantic;如果要对传递普通dict的代码进行类型检查,请使用TypedDict;如果要创建简单的内部对象,请使用dataclasses。

代码需要哪个Python版本?

需要Python 3.10或更高版本,因为代码使用了X | None语法;TypedDict中的NotRequired需要Python 3.11,较旧版本则需要使用typing_extensions。

为什么有些字段的类型是Any?

始终为null的键或空数组无法提供类型线索;请根据API文档将Any替换为实际类型。

免费工具·使用在浏览器中次·无需账户