提供有差异的记录
输入单个对象或非空对象数组。嵌套数组同一位置的所有对象共同参与元素模型推断,跨样本比较才能发现缺失字段。
类型生成
比较示例中的两条记录:缺少键与明确的 null 会生成不同的字段默认值。
解析与生成均在当前浏览器内完成,输入不会上传或存储。
数组样本定义元素模型 Root。Pydantic 的 load_models 接受对象或数组。
2 个类 · 2 个可空字段
JSON 转 Python 把有代表性的接口响应整理成模型草稿。请提供键名有所差异的多条记录;只提供一个完整对象,无法推断哪些字段可能缺失。
Python 类型注解描述观测到的结构。选择标准库数据类保存数据,或用 Pydantic 模型解析和校验;样本不会自动形成完整的业务约束。
JSON 转 Python 会让始终存在、但可为空的字段保持必填;若其他样本缺少这个键,则添加 None 默认值。两者对构造函数和校验的要求不同。
保留字、标点与模型方法名需要安全的 Python 属性名。生成器用 dataclass 元数据或 Pydantic 别名记录原始拼写,冲突时按确定规则添加后缀。
输入单个对象或非空对象数组。嵌套数组同一位置的所有对象共同参与元素模型推断,跨样本比较才能发现缺失字段。
默认仅为观测到缺失的键添加 None;全可选模式允许每个字段省略。日期默认保留 str。Decimal 影响小数、指数数字及包含它们的合并数字组。
编辑后等待 350 毫秒自动生成。关闭自动模式后使用生成按钮或 Ctrl/Cmd+Enter。任何修改都会立即禁用导出;清空和示例操作保留一次输入、选项与源码的撤销快照。
JSON 转 Python dataclass 输出只依赖标准库,把必填字段排在有默认值的字段前。Pydantic 固定兼容 2.12.5。子类先于引用它的父类声明,整个文件可在 Python 3.9 导入。
纯整数组使用任意精度 int;出现小数或指数形式时,默认整组使用 float,混入的大整数也可能发生二进制舍入。Decimal 模式为这类组使用 Decimal;配套加载函数无需经过 float 中间值,也会精确解析 Any 容器中的小数。
ISO 模式仅识别有效日历日期,以及带时区且小数秒不超过六位的完整时间戳。同一位置的所有非空字符串必须属于同一种日期类型。无时区、无效或更高精度时间仍为 str;只有 Pydantic 会转换字符串。
字段转为 ASCII snake_case。关键字、前导下划线、model_* 名称与 BaseModel 方法名会重命名。空键、Unicode 和控制字符保留别名;导入模块使用私有别名,避免与 Decimal 等类名冲突。
可以自行编写转换代码而不安装第三方库,但生成的数据类不带解码器。json.loads 得到字典与列表,您还需要映射别名并逐层构造实例。
JSON 转 Python 生成的 dataclass 只声明字段。构造函数不会根据注解把 dict 变为子类;可自行转换,或选择 Pydantic 并调用 load_models 完成嵌套构造。
启用别名后,Pydantic 的 Field(alias=...) 接受原键名;dataclass 把它存为 json_key 元数据,供您的适配器读取。冲突键通过后缀分开,不会落到其他字段的 Python 属性名。
不会。导出的类是静态源码,只有重新生成或手动修改才会更新。新增键传给当前 Pydantic 模型会触发未知字段错误;请用有代表性的新样本重新生成并评审变更。
可以先用 dataclasses.asdict 递归得到字典,再由 json.dumps 序列化,但键会是 Python 属性名。原始别名需要自己还原,date 与 Decimal 等值还需要专门的编码策略。
发现需要改进的推断情况?