JSON 转 Java 类
将 JSON 转换为 Java record、带 getter 和 setter 的 POJO,或 Lombok @Data 类,支持嵌套类、List<> 类型以及 Jackson @JsonProperty 名称。
类型推断使用 JavaScript 数字,因此整数样本必须在 ±9,007,199,254,740,991 范围内。更大的标识符或精确的小数值请使用字符串。
record 需要 Java 16 或更高版本;Jackson 2.12 及以上无需额外配置即可读取。
Jackson 2.x 注解来自 com.fasterxml.jackson.core:jackson-annotations。POJO 和 Lombok 模型使用字段进行 JSON 绑定,因此 getter 的命名不会造成键重复。
用法:User obj = new ObjectMapper().readValue(json, User.class);
粘贴 JSON 样本,即可得到 Jackson 能直接读取的 Java 类。可选择简洁的 record(Java 16 及以上)、带 getter 和 setter 的传统 POJO,或 Lombok @Data 类。嵌套对象会变成同一个可直接粘贴的文件里的嵌套静态类,数组会变成 List<…>,不是合法 Java 名称的键会被改成驼峰命名,并加上保留原始键的 @JsonProperty 注解。
使用方法
- 粘贴一个 JSON 对象;如果要合并多个样本,可粘贴一个对象列表。
- 设置根类名称,也可以选填包名。
- 选择 record、POJO 或 Lombok。
- 如果键使用 snake_case、连字符等不属于 Java 名称的形式,请保持 Jackson 注解开启。
计算公式
string → String · 整数 → int(超出 −2,147,483,648…2,147,483,647 则为 long)· 小数 → double · true/false → boolean · 对象 → 嵌套类 · 数组 → List<元素类型> · null 或缺失 → Integer, Double, Boolean · 混合 → Object
基本类型无法存放 null,所以在任何样本中为 null 或缺失的键,都会使用包装类型。字段名采用驼峰命名:user_name 变成 userName,Java 关键字会加后缀,因此 class 变成 classValue。当 Java 名称与键不同,或第二个字母为大写(Jackson 的 getter 命名规则会因此改变键)时,会添加 @JsonProperty。数字推断使用 JavaScript 数字,因此整数样本必须在 ±9,007,199,254,740,991 范围内;更大的标识符或精确小数请使用字符串。开启 Jackson 后,POJO/Lombok 模型会直接绑定字段,以免 getter 别名造成键重复。空的 JSON 键必须先重命名。
示例
默认样本会生成 3 个类和 16 个字段:User,以及嵌套的 Address 和 Order。"id": 1024 变成 int id,"balance": 1520.75 变成 double balance,"tags" 变成 List<String> tags。两个订单都有 total,而 59.9 是小数,所以是 double total。order_id 被重命名为 orderId 并带有 @JsonProperty("order_id"),"lastLogin": null 只有 null 无法判断类型,所以变成 Object lastLogin。
常见问题
该选 record、POJO 还是 Lombok?
record 需要 Java 16 及以上和 Jackson 2.12 及以上。POJO 使用显式的 getter 和 setter。Lombok 的 @Data 在编译时生成访问器,需要引入其依赖和注解处理器。生成的 Jackson 注解使用 Jackson 2.x 的包。
为什么有的地方是 int,有的地方是 Integer?
基本类型 int 不能为 null。只要某个键在任一样本中为 null 或缺失,生成器就使用 Integer,这样缺失的值会保持为 null,而不会悄悄变成 0。
为什么 isActive 的 getter 叫 isIsActive()?
在 POJO 模式下,基本类型 boolean 的 getter 使用 is 加完整的字段名,所以是 isIsActive()。Lombok 可能会把 isActive 缩短为 active 属性;开启 Jackson 注解后,生成的别名会保留 JSON 键。
可以配合 Gson 使用吗?
名称一致时可以。Gson 直接读取字段并使用自己的 @SerializedName 注解,因此请关闭 Jackson 注解,并给被重命名的字段加上 @SerializedName。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/json-to-java-class-tool/
引用此工具
kakaoCalc. (2026, November 8). JSON 转 Java 类. https://kakao.mobile/zh/tools/json-to-java-class-tool/
“JSON 转 Java 类.” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/json-to-java-class-tool/.