Tool Kumar 工具
JSON 转 Java 实体类
把 API 示例转换为适用于 Jackson 的 Java record(记录类)。根类型是一个 public record,嵌套的 record 都定义在它内部,因此整个输出可以保存在 Root.java 中。
如何使用这个工具
- 粘贴一份有代表性的响应,其中应包含字段存在差异的记录。
- 检查生成的输出,必要时修改根名称。
- 复制或下载代码,然后对照你的 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 检查日期处理和数值范围。