类型生成

JSON 转 Java从接口样本生成可审查的实体类

比较两个样本与对应字段。根数组生成元素模型,解码整个数组时使用 List<Root>。

JSON 转 Java

JSON 输入

解析与生成均在浏览器完成,输入不会上传或存储。

生成的源代码

生成选项

使用 Jackson 2.x;Kotlin 还需对应模块。样本只推断类型,解码配置见下方说明。

数组输入:此文件定义元素模型,解码时使用 List<Root>。

2 个类 · 2 个可空字段

只有接口响应、没有类型定义时,可以用 JSON 转 Java 建立初稿。把多个有代表性的对象放进数组,后续记录才出现的字段也会被纳入,缺失与 null 会影响可空类型。

这个 POJO 生成器不能从样本证明业务字段必填。JSON 转 Java 实体类适合减少重复录入;生成后仍需根据接口契约检查类型和校验逻辑。

为什么使用 JSON 转 Java

合并全部对象样本

JSON 转 Java 会查看数组中同一位置的所有对象结构。第二条记录才有的字段不会遗漏,某条记录缺少字段或明确给出 null 时,会采用更宽的字段类型。

两张字段不同的样本卡片汇入一个模型,空心标记表示其中一条记录缺失的字段。

原始键名与合法属性对应

连字符、中文键和保留字不能直接照搬成属性名。工具生成合法名称并用 Jackson 注解保留映射,名称相撞时增加稳定的数字后缀,嵌套对象有独立类型。

不同形状的原始键通过同色连线连接到合法属性及嵌套类。

先看样本差异,再决定模型

01

提供能反映差异的记录

根输入必须是对象,或仅含对象的非空数组。数组用来合并元素模型,不会虚构包装字段;内部数组会递归检查全部元素。

02

确认可空策略和类位置

按样本判断时,仅缺失或出现 null 的字段变为可空;全部可空会装箱 Java 原始类型,并给 Kotlin 属性增加问号与 null 默认值。关闭嵌套后,辅助类放在同一文件的顶层。

03

导出当前版本

自动生成等待 350 ms;关闭开关后使用生成按钮或 Ctrl/Cmd+Enter。输入或选项变化立即禁用导出。清空和载入示例保留一次撤销,可恢复输入、参数和结果。

字段、数值与类声明

保留数字类型证据

有符号 64 位范围内的普通整数使用 long/Long;更大整数使用 BigInteger;小数和指数写法使用 BigDecimal,包括 1.0 与 1e3。类型判断不经过 JavaScript 浮点数。

同页生成数据类

选择 Kotlin 即可进行 JSON 转 Kotlin 数据类。缺失或为 null 的属性使用 T? = null,其他属性不加默认值;空根对象使用普通 class,避免生成没有参数的非法 data class。

名称消歧与双向映射

属性转为 ASCII 驼峰命名,碰撞时顺序加后缀。Java 字段带 JsonProperty;Kotlin 的构造参数和 getter 分别带注解。类型使用全限定名,根类叫 String 或 List 也不会遮蔽。

单文件交付

默认 Java 为公开字段及静态嵌套类,Kotlin 为嵌套数据类。关闭嵌套后,Java 辅助类是非公开顶层类,Kotlin 辅助类为顶层类;下载仍只有一个源文件。

集成要求与推断边界

需要配置 Jackson
注解面向 Jackson 2.x;Kotlin 还需 jackson-module-kotlin 与 kotlin-reflect。非空检查需设置 FAIL_ON_NULL_FOR_PRIMITIVES 和 StrictNullChecks,模型本身不是验证器。Java 引用类型在按样本模式下仍能存放 null。
宽类型需要精度配置
混合值与纯 null 字段回退 Object/Any,空数组元素未知,内部空对象使用 Map。解码这些位置的大数需开启 USE_BIG_INTEGER_FOR_INTS 和 USE_BIG_DECIMAL_FOR_FLOATS。空根类序列化还需关闭 FAIL_ON_EMPTY_BEANS。
拒绝无法准确表达的键
JsonProperty 的空名称表示默认名,不能映射真正的空字符串键,因此会报错。关闭注解后,任何需要改名的键也会报错。此类特殊模型请改用 Map 或自定义解码器。
样本不等于 Schema
不提供 JSON Schema、OpenAPI、Lombok、record、Gson、日期或枚举推断,字符串保持字符串。根标量、空数组和混合根数组均拒绝;不单独追踪字段缺失与显式 null。
严格解析及有限预算
不支持注释、重复键、修复、远程地址和文件导入。上限:输入 500,000 字符、50,000 节点、深度 40、每对象 100 字段、200 类、每键及数字令牌 1,000 字符、指数绝对值 10,000、输出 1,000,000 字符。

JSON 转 Java 常见问题

字段类型如何推断?

JSON 转 Java 合并同一位置的所有样本,再选择布尔、字符串、整数、小数、集合或对象类型。类型冲突回退 Object/Any,不会只根据第一条记录猜测。

输入数据会发送到服务器吗?

解析和生成均在当前浏览器执行,不上传或存储输入。这里没有远程 URL 获取或分享样本链接的入口。

浏览器会编译生成的代码吗?

不会。页面只生成源文件,不执行用户代码。下载后在自己的项目加入 Jackson 依赖、包声明及测试,再进行编译和解码验证。

如何处理缺失字段与 null?

默认按观察结果装箱 Java 原始字段,或生成 Kotlin 的 T? = null。全部可空模式更保守。缺失与显式 null 不分为两个状态,未来必填条件仍要查接口契约。

原始键不是合法标识符怎么办?

工具先生成合法名称,再通过 Jackson 注解保留原始键。保留字和名称碰撞会改名;关闭注解则拒绝此类输入。空字符串键始终需要 Map 或自定义解码方案。

发现需要补充的推断边界?

把模型放进项目验证

用 JSON 转 Java 处理几条真实响应,核对可空字段、原始键映射与 Jackson 配置,再把源文件放进项目编译测试。