Tool Kumar 工具

JSON 转 Java 实体类

把 API 示例转换为适用于 Jackson 的 Java record(记录类)。根类型是一个 public record,嵌套的 record 都定义在它内部,因此整个输出可以保存在 Root.java 中。

如何使用这个工具

  1. 粘贴一份有代表性的响应,其中应包含字段存在差异的记录。
  2. 检查生成的输出,必要时修改根名称。
  3. 复制或下载代码,然后对照你的 API 契约检查类型。

示例演示

以下输出来自内置转换器。两个数组元素的 price 值用于推断浮点型字段;note 值分别为 null 和字符串,因此推断为可空字段。

输入

{
  "user-id": 42,
  "profile": {
    "city": "London",
    "created_at": "2026-10-14T09:00:00Z"
  },
  "items": [
    {
      "price": 12,
      "note": null
    },
    {
      "price": 12.5,
      "note": "gift"
    }
  ]
}

输出

import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

public record Root(
    @JsonProperty("user-id") long userId,
    Profile profile,
    List<Item> items
) {
    public record Profile(String city, @JsonProperty("created_at") String createdAt) {}

    public record Item(double price, String note) {}
}

在 Jackson 中使用 record

把默认输出保存为 Root.java。Jackson 会根据 JSON 属性构造 record 组件。像 Item 这样的嵌套 record,可以通过 Root.Item 访问。

输出中没有 package 声明,请加上你的应用所用的包名。如果把日期改为 java.time 类型,请注册你常用的 Jackson 模块。

import com.fasterxml.jackson.databind.ObjectMapper;

Root model = new ObjectMapper().readValue(responseBody, Root.class);

选项与特殊情况

  • 这个目标生成的是 record,而不是带 setter 的可变 POJO。需要 Java 16 或更高版本,以及支持 record 的 Jackson 版本,例如 2.12 或更高。
  • 被重命名或与保留字冲突的 record 组件,会加上带原始键名的 @JsonProperty。嵌套的对象数组变成 List<Item>。
  • 整数使用 long,超出有符号 64 位范围的大整数使用 BigInteger,小数使用 double。可空的基本类型使用 Long 等包装类型。
  • 只出现过 null 或类型混合的字段使用 Object,日期保持为 String。需要精确的十进制运算时,请改用 BigDecimal,并确认相应的映射。

默认保护隐私

你的文档只保留在这个浏览器中。Tool Kumar 在你的设备上解析、转换并生成下载文件,无需账号,也没有上传步骤。

JSON 转 Java 实体类:常见问题

JSON 转 Java 会生成 POJO 吗?
它生成的是不可变的 Java record。如果你需要 Java 8 风格的 POJO、setter 或无参构造函数,请改写输出,或使用面向那种模型风格的生成器。
面向哪个 JSON 库?
Jackson。当需要保留与 Java 组件名不同的键名时,转换器会导入 @JsonProperty。
可以把所有嵌套类型保存在一个文件里吗?
可以。public 根 record 内含嵌套的 public record,所以默认的对象输出可以放进 Root.java。
如何反序列化这个 record?
在支持 record 的 Jackson 中使用 ObjectMapper.readValue(responseBody, Root.class)。请根据你的 API 检查日期处理和数值范围。

相关工具

JSON 转 Kotlin 数据类、JSON 转 C# 实体类和JSON Schema 生成器。