Skip to main content
CheckTown
转换工具

如何将 JSON 转换为 Java 类

发布于 阅读约 5 分钟
本文目录

为什么要从 JSON 生成 Java 类

Java 冗长的类语法,使得为 JSON 反序列化编写 POJO 成为后端开发中最繁琐的任务之一。一个含有嵌套对象的 API 响应,往往就需要几十行的 getter、setter 和构造函数。我们的 JSON 转 Java 转换器通过分析 JSON 结构并即时生成可直接投入生产的 Java 类,帮你消除这些样板代码。

无论你是在构建 REST API 客户端、处理 webhook 载荷,还是对接第三方服务,从示例 JSON 数据生成 Java 类都能确保你的模型与真实的数据结构相符。这可以减少字段名写错、类型不对以及漏写嵌套类等在手写模型时常见的缺陷。

输出模式

转换器支持多种 Java 类风格,以匹配你的项目需求和 Java 版本。

  • POJO——传统的普通 Java 对象(Plain Old Java Object),带有私有字段、getter、setter 和无参构造函数,兼容所有 Java 版本和序列化框架
  • Lombok @Data——使用 Lombok 的 @Data 注解的类,可自动生成 getter、setter、equals、hashCode 和 toString,大幅减少代码量
  • Java Record——Java 14+ 的 record 类,提供不可变的数据载体,仅需一行声明即可自动生成访问器方法、构造函数、equals、hashCode 和 toString

免费试用 —— 无需注册

将 JSON 转换为 Java →

注解选项

转换器会为主流的 Java JSON 库生成注解,以确保字段映射正确。

  • Jackson @JsonProperty——添加带有原始 JSON 键名的 @JsonProperty 注解,即使 Java 字段名与 JSON 键不同也能确保正确反序列化
  • 自定义命名——当 JSON 使用 snake_case 或 kebab-case 键时,转换器会生成 camelCase 的 Java 字段名,并通过 @JsonProperty 映射回原始键格式
  • 嵌套类——为嵌套的 JSON 对象生成结构合理的内部类或独立的顶层类,并附带相应的 import 语句和类型引用

常见问题

生成的代码中我应该用 List 还是 ArrayList?

转换器生成的字段类型使用 List 接口,而非 ArrayList 实现。这遵循了 Java 的最佳实践——面向接口而非面向实现编程。你可以在构造函数中用 ArrayList、LinkedList 或任意其他 List 实现来初始化这些字段。

转换器如何在基本类型和包装类型之间做选择?

默认情况下,转换器使用包装类型(Integer、Double、Boolean)而非基本类型(int、double、boolean)。包装类型能够表示来自 JSON 的 null 值,这对可选字段至关重要。若对可空的 JSON 字段使用基本类型,会悄悄地把 null 转换成 0 或 false,从而掩盖数据问题。

我可以生成兼容 Gson 而非 Jackson 的类吗?

生成的 POJO 输出无需修改即可同时配合 Jackson 和 Gson 使用。如果你需要 Gson 专用注解(如 @SerializedName),只需把 @JsonProperty 替换为 @SerializedName 即可——字段映射模式完全相同。无论使用哪种序列化库,生成的字段名都遵循 Java 约定。

相关工具