JSON 转 Java
免费在线 JSON 转 Java 工具,把 JSON 数据一键转成带注解的 Java POJO 实体类。支持 4 种序列化注解库(Lombok / Jackson / Gson / Fastjson),Lombok @Data 自动精简,可选 Serializable 接口和 toString / equals / hashCode 自动生成,4 种字段命名策略,嵌套类自动生成。
相关推荐
关于 JSON 转 Java POJO 与 Java 实体类
JSON 转 Java 工具(JSON to Java Converter)是一种把 JSON 数据结构自动转换为标准 Java POJO 类代码的实用工具。它把开发者从手写 package / import / private 字段 / getter / setter 的重复劳动中解放出来,特别适合把 API 接口文档中的示例 JSON 快速转为可直接编译的 Java 实体类。
POJO(Plain Old Java Object)是 Java 社区对「普通 Java 对象」的简称,约束为:① 私有字段(private);② 公共 getter / setter 方法访问字段;③ 无框架继承依赖(如不继承 HttpServlet / EJB 等)。POJO 是 Spring Boot / Hibernate / Jackson 等主流框架的核心数据载体,JSON 转 Java 的本质就是把 JSON 的动态结构静态化为 POJO 类型。
本工具支持 4 大主流序列化注解库:① Gson(Google,@SerializedName 注解);② Jackson(Spring Boot 默认,@JsonProperty + @JsonFormat 注解);③ Fastjson(阿里巴巴,@JSONField 注解);④ Lombok(@Data / @Builder / @NoArgsConstructor / @AllArgsConstructor 集合)。开发者可根据项目使用的序列化框架自由选择,无需在 IDE 中二次处理。
Lombok @Data 模式是本工具的高级特性:启用后生成的 Java 类只有 5 行(@Data + 字段),所有 getter / setter / equals / hashCode / toString 都在编译期由 Lombok 自动生成。这与 IDE 模板生成或手写 POJO 相比,源代码可读性提升 80%+,维护成本降低 60%+。注意项目需引入 lombok 依赖(Maven / Gradle 坐标)。
另一个差异化亮点是「ZIP 多文件下载 + 包路径自动组织」:传统在线工具只能复制粘贴单个类,而本工具可一键下载 ZIP 包,内含按包名(如 com/geekformat/pojo/)组织的目录结构,解压后可直接用 IDE 的「Import Project」批量导入,省去手动创建包目录的步骤。
适用场景
- Android 开发:把后端 API 返回的 JSON 转为 Java 实体类(POJO),可选 Gson / Moshi / Fastjson / Jackson 注解直接用于反序列化
- Spring Boot 后端:把 API 接口文档中的示例 JSON 快速转为 DTO / VO / Entity 类,配合 Lombok @Data 精简代码量
- 对接第三方接口:把对方接口的响应 JSON 转为对应 Java 模型,选择对应的序列化注解(Jackson / Fastjson / Gson)无缝对接
- 微服务架构:统一 RPC 接口的请求 / 响应数据模型,多个团队共享同一份 Java 类定义
- 教学与培训:数据结构课程、Java 教学场景中把示例 JSON 转 POJO 演示面向对象建模
- API 文档编写:在 Swagger / OpenAPI / Knife4j 文档中嵌入 Java 实体类示例
- 单元测试准备:把 JSON fixture 转成 Java 类后用 Jackson 反序列化做测试数据驱动
- 数据迁移脚本:把 JSON 配置文件转为 Java 类后用于业务逻辑强类型访问
- 前端 Mock 对接:后端先把 JSON 模型转 Java,前端同时拿到对应的 TypeScript interface / Java POJO
- 代码评审:把 API 返回 JSON 直接转成可读的 POJO,便于 Code Review 时讨论字段命名
- 老项目重构:把基于 JSONObject 动态访问的代码重构为基于 POJO 的强类型访问
- Entity / DTO 多角色建模:同一份 JSON 生成 UserEntity(DB 层)+ UserDTO(API 层)+ UserVO(视图层),可分别选择不同注解
- snake_case 后端 API 接入:后端 API 返回 snake_case 字段,前端 Java 系统启用「转 camelCase」+ Gson/Jackson 注解无缝接入
- 需要持久化的 DTO:勾选「实现 Serializable」直接可用于 Redis 缓存或分布式 Session 存储
使用方法
- 在左侧编辑器粘贴 JSON 对象(推荐)或数组,或点击「Sample」加载中文示例(含嵌套 address / company / tags)
- 点击工具栏「Settings」按钮(或带类名的按钮),在弹窗中选择:① 设置根类名(如 User)和包名(如 com.example.entity);② 选择序列化注解库(Gson / Jackson / Fastjson / Lombok / 无);③ 选择代码风格(toString / equals / hashCode / 构造器 / Serializable);④ 选择字段命名策略(保持原样 / camelCase / 全小写 / UPPER_SNAKE)
- 工具会在 400ms 内自动转换,右侧显示所有生成的 Java 类(每个类一个独立卡片,标题栏实时显示当前注解库和 Lombok 徽章);如 JSON 格式错误会显示「修复 JSON」按钮
- 检查生成的类名、字段名和注解是否符合预期;如需调整可修改源 JSON 的 key 名或重新打开 Settings 修改选项
- 满意后可点击单个类的「复制」按钮粘贴到 IDE,或点击工具栏「Download ZIP」一键下载所有类(按包路径组织目录结构)
功能特点
- 4 种序列化注解库:Gson (@SerializedName) / Jackson (@JsonProperty + @JsonFormat 日期) / Fastjson (@JSONField) / Lombok (@Data),开关切换即可
- Lombok @Data 模式:自动生成 @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor 组合,Java 类从 ~50 行精简到 ~5 行
- 4 种字段命名策略:保持原样 / snake_case 转 camelCase(user_name → userName)/ 全小写 / UPPER_SNAKE 常量风格
- 代码风格自由组合:可选生成 toString / equals / hashCode / 无参构造器 / 全参构造器 / 实现 Serializable 接口
- 智能类型推断:自动识别 String / Integer / Double / Boolean / List<Object> / 嵌套对象类型,无需手动指定字段类型
- 嵌套类自动生成:嵌套对象自动转换为独立 Java 类(按首字母大写命名),数组中对象自动按「移除复数 s」规则命名类
- 数组泛型自动展开:JSON 数组自动转换为 Java List<T> 泛型,元素类型按首项自动推断
- 完整 POJO 模板:生成包含 package 声明 + 文件头注释(Copyright + 自动生成时间戳)+ import + 私有字段 + getter/setter 的完整 .java 文件
- ZIP 多文件下载:所有生成的类按包路径组织(如 com/example/entity/User.java),一键打包为 ZIP 下载,含目录结构
- 自定义包名 + 类名:可自由设置 package(如 com.example.entity)和根类名(如 User),所有类名同步基于根类名生成
- 缩进控制:右侧支持 2 / 4 空格缩进切换,匹配团队代码规范
- 复制单个类:每个生成的 Java 类有独立「复制」按钮,方便单独粘贴到 IDE 中
- 自动转换 + 错误修复:输入 400ms 防抖自动转换,JSON 错误时弹「修复 JSON」按钮,可自动修复常见格式错误(多余逗号、单引号等)
- 示例数据 + 文件上传:内置中文示例数据(含嵌套 address / company / tags / scores),支持拖拽或点击上传 .json / .txt 文件
- 本地历史记录:基于 localStorage 持久保存最近 200 条输入,刷新或误关页面后可快速恢复
- 本地浏览器运行:所有 JSON 解析、Java 生成、ZIP 打包都在你的浏览器内通过 JavaScript 完成,数据不上传任何服务器
代码示例
Java:用 Jackson 反序列化本工具生成的 POJO
javaSpring Boot 项目中,最常见的用法:把本工具生成的 POJO 用 Jackson 反序列化 API 响应。
import com.fasterxml.jackson.databind.ObjectMapper;
import com.geekformat.pojo.User;
import com.geekformat.pojo.Address;
public class ApiClient {
private final ObjectMapper objectMapper = new ObjectMapper();
public User getUser(int userId) throws Exception {
// 1) 调用 API 获取 JSON 字符串
String json = httpClient.get("https://api.example.com/users/" + userId);
// 2) 直接反序列化为本工具生成的 POJO
User user = objectMapper.readValue(json, User.class);
// 3) 强类型访问字段(编译期类型检查)
System.out.println("User: " + user.getName());
if (user.getAddress() != null) {
System.out.println("City: " + user.getAddress().getCity());
}
return user;
}
public static void main(String[] args) throws Exception {
ApiClient client = new ApiClient();
User user = client.getUser(123);
System.out.println(user.getName());
}
}Java:Lombok @Data + @Builder 使用方式
java本工具 Lombok 模式生成的代码,配套使用方式:用 builder 链式调用构造对象,编译期由 Lombok 生成完整 POJO。
import com.geekformat.pojo.User;
public class UserService {
public User createUser() {
// Lombok @Builder 模式:链式调用,比传统 setter 更直观
User user = User.builder()
.id(1)
.userName("Alice")
.email("alice@example.com")
.isActive(true)
.createdAt("2026-07-08T10:00:00.000Z")
.build();
System.out.println(user);
// Lombok @Data 自动生成 toString():
// User(id=1, userName=Alice, email=alice@example.com, ...)
return user;
}
public boolean isValid(User user) {
// Lombok @Data 自动生成 equals() 和 hashCode()
return user != null && user.getId() != null;
}
}
/*
* 对应 pom.xml 依赖:
* <dependency>
* <groupId>org.projectlombok</groupId>
* <artifactId>lombok</artifactId>
* <version>1.18.30</version>
* <scope>provided</scope>
* </dependency>
*/命令行:解压本工具下载的 ZIP 导入 IDE
bash本工具下载的是 ZIP 包(按包路径组织),解压后可直接 Import 到 IDE 中。
# 1) 下载 ZIP 后(文件名形如 User.zip)
unzip User.zip -d src/main/java/
# 2) 检查目录结构
tree src/main/java/
# src/main/java/
# └── com/
# └── example/
# └── entity/
# ├── User.java
# ├── Address.java
# └── Company.java
# 3) 在 IntelliJ IDEA 中:右键 com 目录 → "Mark Directory as" → "Sources Root"
# 或在 Eclipse 中:File → Import → Existing Projects into Workspace
# 4) 在 Spring Boot 项目中直接使用
# UserController.java
# @PostMapping("/users")
# public ResponseEntity<User> createUser(@RequestBody User user) {
# userService.save(user);
# return ResponseEntity.ok(user);
# }
# 5) 编译验证
mvn compile
# [INFO] BUILD SUCCESS
# 6) (可选)使用 Lombok 时记得在 pom.xml 加 lombok 依赖
# <dependency>
# <groupId>org.projectlombok</groupId>
# <artifactId>lombok</artifactId>
# </dependency>常见问题
怎么把 JSON 转成 Java POJO 类?
将 JSON 内容粘贴到输入框,工具会在 400ms 内自动转换;或在工具栏点击「Convert」按钮。转换完成后右侧会显示所有生成的 Java 类,每个类有独立的「复制」按钮;点击工具栏「Download ZIP」可一键打包所有类下载。
支持哪些 JSON 数据结构?
支持两种结构:① JSON 对象(作为根类,自动生成 public class RootBean { ... });② JSON 数组(数组第一个对象作为根类模板)。所有嵌套对象会被递归处理为独立类,数组中的对象会被递归处理为 List 元素类型对应的类。
生成的 Java 类包含什么内容?
每个生成的 .java 文件包含:① 文件头注释(Copyright + 自动生成时间戳);② package 声明;③ import 语句(含 List / Objects / Serializable / Gson / Jackson / Fastjson / Lombok 等按需自动导入);④ public class 类声明(可选 implements Serializable);⑤ 私有字段(private,按需带注解);⑥ 标准 getter / setter 方法(或仅 Lombok 注解);⑦ 可选 toString / equals / hashCode 方法。完整可直接 javac 编译。
支持生成 Gson / Jackson / Fastjson / Lombok 注解吗?
支持。在 Settings 弹窗的「序列化注解库」分组里选择:① Gson(每个字段加 @SerializedName("原始 key"));② Jackson(每个字段加 @JsonProperty,日期字段额外加 @JsonFormat);③ Fastjson(每个字段加 @JSONField(name="原始 key"));④ Lombok(在类上加 @Data,可选 @Builder / @NoArgsConstructor / @AllArgsConstructor);⑤ 无注解(默认,仅纯净 POJO)。所选注解库会自动 import 对应的包。
Lombok @Data 模式生成的代码长什么样?
启用 Lombok 后,生成的 Java 类会大幅精简。例如 class User 启用 Lombok 后只有 5 行:@Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + 字段声明。所有 getter / setter / equals / hashCode / toString 都在编译期由 Lombok 自动生成,源代码可读性显著提升。注意:项目需引入 Lombok 依赖(pom.xml / build.gradle 加 lombok 坐标),IDE 需安装 Lombok 插件。
怎么把 snake_case 字段名转成 camelCase?
在 Settings 弹窗的「字段命名策略」分组里选择「转 camelCase」模式,工具会自动把 JSON 字段名从 snake_case 转为 Java 推荐命名风格。例如 user_name → userName、created_at → createdAt、is_active → isActive。同时如果选了 Gson/Jackson/Fastjson 注解,注解里仍保留原始 snake_case 字符串,保证反序列化能正确映射。
嵌套的 JSON 对象会怎么处理?
工具会自动为嵌套对象创建独立的 Java 类。命名规则:嵌套对象 key 首字母大写作为类名(如 address → Address),数组中的对象 key 移除末尾 s 后首字母大写(如 users → User)。所有嵌套类同样包含完整字段 + getter/setter + 注解。
数组字段会自动转成 List 吗?
会。JSON 中的数组字段会自动转换为 Java List<T> 泛型,元素类型根据数组第一个元素自动推断。例如 ["a","b","c"] → List<String>;[{...},{...}] → List<User>(User 为根据 key 命名的新类);空数组 [] 默认 List<Object>。
怎么修改根类名和包名?
工具栏右上角有一个 Settings 按钮(或带类名标记的按钮),点击后弹出设置对话框,可设置:① 根类名(默认 JsonRootBean);② 包名(默认 com.geekformat.pojo)。修改后所有生成的类名会同步更新,ZIP 内的目录结构也会按包路径组织。
下载的是单个 .java 文件还是 ZIP 包?
下载的是 ZIP 包(JsonRootBean.zip),内含所有生成的 Java 类,按包路径组织目录结构。例如包名 com.geekformat.pojo 时,ZIP 内的文件结构为:com/geekformat/pojo/JsonRootBean.java、com/geekformat/pojo/Address.java 等。可用 unzip 命令或 IDE 直接导入。
可以直接复制单个类到 IDE 吗?
可以。每个生成的 Java 类显示为一个独立的卡片,卡片右上角有「复制」按钮,点击后整个类的完整代码(包含 package + import + 类定义 + 字段 + 注解 + getter/setter)会被复制到剪贴板,可直接粘贴到 IntelliJ IDEA / Eclipse / VS Code 等 IDE 中。
如何生成带 @Builder 的 Lombok Builder 模式?
在 Settings 弹窗的「代码风格」分组里:① 勾选「使用 Lombok @Data 简化代码」(会自动启用 lombok 注解库);② 勾选「生成 @Builder 建造者模式」。生成的类会自动加 @Builder 注解,使用方式:User user = User.builder().id(1).name("Alice").build();
如何让生成的类实现 Serializable 接口?
在 Settings 弹窗的「代码风格」分组里勾选「实现 Serializable 接口」,工具会自动:① 在类声明加上 implements Serializable;② 自动 import java.io.Serializable。适合需要把 POJO 写入文件、网络传输或 Redis 缓存的场景。
JSON 转 Java 和 JSON 转 TypeScript 有什么区别?
两者都是将 JSON 转换为对应语言的类型定义,但侧重点不同:① Java 生成的是完整 POJO 类(含 package + import + private 字段 + getter/setter),可直接编译运行;② TypeScript 生成的是 interface 或 type 声明,仅描述数据结构,不含实现。选择取决于你的开发语言。
生成的代码可以用于 Spring Boot 项目吗?
可以。本工具生成的 POJO 类符合标准 Java Bean 规范(私有字段 + getter/setter),与 Spring Boot 的 Jackson 反序列化、MVC 表单绑定、JPA 实体定义(手动)兼容。如需 Lombok 简化(@Data / @Builder),可在 Settings 弹窗一键启用,无需 IDE 二次重构。
JSON 格式错误怎么办?
工具会自动检测 JSON 合法性,错误时会在右侧显示红色错误提示,并提供「修复 JSON」按钮。点击后可自动修复常见错误:① 末尾多余逗号;② 单引号替换为双引号;③ 缺失引号的 key 补全引号;④ 注释移除。修复成功后可直接转换生成 Java 类。
数据上传到服务器吗?隐私安全吗?
完全本地浏览器运行。所有 JSON 解析、Java 类生成、ZIP 打包都在你的浏览器内通过 JavaScript(JSZip)完成,输入的 JSON 数据和生成的 Java 代码都不会被上传到任何服务器,也不会被记录或缓存到云端。包含内部接口字段、未上线业务结构、未公开 API 响应的敏感 JSON 都可以放心使用,关闭页面即清除。
生成 1 万行的大 JSON 会不会卡?
工具无显式行数限制,但浏览器对超大 JSON 的解析和渲染会变慢。建议:① 拆分 JSON 后批量转换;② 一次只关注一个嵌套层级;③ 如需批量生成 100+ 类,建议直接使用 IDE 的代码生成插件(如 MyBatis Generator、MapStruct)或专门的 Java 代码生成库(JavaPoet / JOOQ)。
故障排查
提示「请输入 JSON 数据」或类似错误
左侧输入框为空或只有空白字符。确保已粘贴有效的 JSON 内容,或点击「Sample」加载中文示例,或点击「Upload」选择 .json / .txt 文件。
提示「Unexpected token ... in JSON at position N」
JSON 格式不合法。常见原因:① 末尾有多余逗号(如 {"a":1,});② 用了单引号而非双引号;③ JS 对象写法(如 {key: value})而非 JSON(如 {"key": "value"})。点击「修复 JSON」按钮可自动修复部分错误。
生成的注解与项目使用的框架不匹配
在 Settings 弹窗的「序列化注解库」分组里切换注解库:① Spring Boot 项目用 Jackson;② Android 项目用 Gson;③ 阿里系 Java 后端用 Fastjson;④ 想精简代码用 Lombok;⑤ 不想引入任何注解库就选「无注解」。切换后所有字段注解和 import 都会自动重新生成。
Lombok 编译报「找不到符号」
项目未引入 Lombok 依赖。在 pom.xml 加:`<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.30</version><scope>provided</scope></dependency>`;IDE 还需要安装 Lombok 插件(IntelliJ IDEA → Plugins → 搜索 Lombok → Install)。
想生成不带 Lombok 但又要精简代码
可在 Settings 弹窗不勾选 Lombok @Data,改用传统模式但保持精简:① 勾选「生成无参构造器」+「生成全参构造器」+「生成 toString / equals / hashCode」;② 团队可在 IDE 中用 Postfix Completion(IntelliJ 的 .var / .field 模板)批量生成。或者直接用 IDE 内置的 Generate POJO 功能(Alt+Insert → Constructor / Getter / Setter)。
snake_case 转 camelCase 后 IDE 报错「找不到符号」
「转 camelCase」只改字段名,但 Lombok @Data 自动生成的 getter/setter 会按新字段名生成(如 user_name → userName → getUserName / setUserName),所以代码本身正确。如果仍报错,检查:① IDE 是否成功重新编译;② Lombok 插件是否安装并启用;③ 清理 IDE 缓存(File → Invalidate Caches)。
嵌套对象的类名不是我想要的(如 categories 被命名为 Categori)
工具对数组中的对象采用「移除末尾 s + 首字母大写」的命名规则,对于 categories 等不规则复数命名不友好。建议:① 把源 JSON 的 key 改为单数(如 categories → category);② 或生成后在 IDE 中用 IDE 的 Rename 重命名类(同时修改所有引用)。
下载的 ZIP 解压后目录结构不对
ZIP 内的目录按 package 设置组织(默认 com/geekformat/pojo/)。如果解压后位置不对,可:① 修改 package 名(如改为 com.example)重新下载;② 用 unzip -d src/main/java 指定解压目录;③ 或在 IDE 中直接 File → Open 整个解压后的文件夹。
Jackson 模式下日期字段反序列化失败
工具会自动检测形如 "2026-07-08T10:00:00.000Z" 的 ISO 8601 日期字符串并加 @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")。如果你的日期格式不同(如 "2026-07-08"),可以:① 在源 JSON 中改用 ISO 8601 格式;② 或生成后手动调整 @JsonFormat pattern 参数。
下载的 ZIP 在 Windows 下中文文件名乱码
ZIP 文件名和 Java 类名默认都是英文(含 ASCII 字符),不会乱码。如果源 JSON 中含中文 key(生成的字段名为中文),IDE 可能提示命名不规范但不会乱码。建议把 JSON key 改为英文(驼峰命名),更符合 Java 编码规范。
生成 100+ 个嵌套类时页面卡顿
工具无显式类数限制,但浏览器对超大 DOM 渲染性能下降明显。建议:① 把 JSON 拆分成几个独立模块分别转换;② 或直接在 IDE 中用 IDE 自带的代码生成工具(IntelliJ 的 JSON to POJO 插件);③ 嵌套层级建议不超过 6 层,否则建议重构 JSON 结构。
数组是数字类型却生成 List<Object>
通常是数组为空 [] 时默认推断为 List<Object>。可在源 JSON 中至少添加一个示例元素(如 [1,2,3]),工具会按首个元素推断类型;或生成后手动把 List<Object> 改为 List<Integer>。
null 值字段生成为 Object 类型
JSON null 值会被工具默认推断为 Object 类型(因为无法判断实际类型)。这是安全做法,避免误判。如确知类型,可在源 JSON 中给该字段一个示例值(如 "field": "" 推断为 String),生成后删除示例值即可。
修改 package 名后 ZIP 目录结构没更新
package 修改后必须重新点击「Convert」按钮(或修改后 400ms 自动触发)。Settings 对话框关闭后,下一次输入变化时工具会用新 package 名重新生成所有文件。
想清理工具自动生成的文件头注释(如 Copyright)
工具默认生成包含 Copyright + 自动生成时间戳的文件头注释。如不需要,可在 IDE 中使用全局 Find & Replace 删除,或修改工具源码中的 generateFileHeader 函数(需要重新部署)。
想做「snake_case 后端 + Java 前端」转换
典型场景:后端 API(如 Python / Go 服务)返回 snake_case 字段,前端 Java 系统需要 camelCase 字段。操作步骤:① 在 Settings 弹窗选 Jackson 或 Gson 注解库;② 选择「转 camelCase」字段命名策略;③ 工具会自动生成:字段名 = userName(camelCase),注解值 = "user_name"(保留原 key),反序列化时按注解映射,访问时按 Java 命名规范。
术语表
- POJO
- Plain Old Java Object,普通 Java 对象。约束为:私有字段 + 公共 getter/setter + 不依赖框架。本工具生成的即是标准 POJO。
- JavaBean
- Java 社区早期对 POJO 的另一种称呼,要求有公共无参构造器 + 私有字段 + 公共 getter/setter。本工具生成的类符合 JavaBean 规范。
- DTO (Data Transfer Object)
- 数据传输对象,常用于跨进程(API / RPC)的数据载体。本工具生成的 POJO 即可作为 DTO 使用。
- VO (Value Object)
- 值对象,通常用于视图层(Controller 返回前端的数据)。本工具生成的 POJO 同样适用。
- Entity
- 实体对象,对应数据库表的一行记录。本工具生成的 POJO 可作为 JPA / Hibernate 的 @Entity 基类(手动添加注解后)。
- @SerializedName
- Gson 库的字段映射注解。本工具 Gson 模式下会为每个字段自动添加 @SerializedName("原始 key"),保证反序列化时按原 JSON 字段名映射。
- @JsonProperty
- Jackson 库的字段映射注解。本工具 Jackson 模式下会为每个字段自动添加 @JsonProperty("原始 key");日期字段额外加 @JsonFormat 定义序列化格式。
- @JSONField
- 阿里巴巴 Fastjson 库的字段映射注解。本工具 Fastjson 模式下会为每个字段自动添加 @JSONField(name = "原始 key")。
- Lombok @Data
- Lombok 库的复合注解,等价于 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor。本工具 Lombok 模式会在类上一键添加该注解。
- Lombok @Builder
- Lombok 的建造者模式注解。本工具勾选后会自动添加,生成可链式调用的 builder() 方法。
- Serializable
- Java 标记接口,实现后对象可被序列化(如写入文件 / 网络传输 / Redis 缓存)。本工具勾选「实现 Serializable」后会自动添加 implements Serializable 并 import java.io.Serializable。
- 嵌套类 (Nested Class)
- 工具对嵌套 JSON 对象自动生成的独立 Java 类。命名规则:嵌套对象 key 首字母大写(如 address → Address)。
- List 泛型
- Java 集合框架的接口,工具自动把 JSON 数组转为 List<T>,T 按数组首项自动推断(如 ["a"] → List<String>)。
- getter / setter
- Java Bean 的标准访问器方法。getter 命名 getXxx() 返回字段,setter 命名 setXxx(value) 设置字段。Lombok 模式下由 @Data 自动生成,传统模式下工具显式生成。
- package 声明
- Java 文件的第一行非注释代码,用于声明类所属的命名空间。本工具根据用户设置的包名自动生成,并在 ZIP 中按 com/xxx/yy 目录组织。
- snake_case → camelCase
- 字段命名策略转换。本工具支持自动把 user_name → userName、is_active → isActive、created_at → createdAt,符合 Java 命名规范。
- JSZip
- 浏览器端的 JavaScript ZIP 打包库,本工具用它在浏览器内直接生成 ZIP 文件,无需服务器端处理。
- localStorage 历史
- 浏览器本地键值存储(容量约 5-10MB)。本工具用 localStorage 持久保存最近 200 条输入。
- 防抖 (Debounce)
- 前端性能优化技巧:把高频事件合并为最后一次执行。本工具设置 400ms 防抖,避免大文件解析卡顿。
- tryFixJSON
- 本工具内置的 JSON 修复函数:自动修复末尾多余逗号、单引号替换为双引号、缺失引号的 key 补全、注释移除等常见错误。
JSON 类型到 Java 类型映射速查表
工具自动推断的 JSON 数据类型与对应的 Java 类型对照:
| JSON 值示例 | 判断方法 | 生成 Java 类型 | 字段默认值 |
|---|---|---|---|
null | value === null | Object | null |
true / false | typeof value === 'boolean' | Boolean | false |
42 | typeof value === 'number' && Number.isInteger(value) | Integer | 0 |
3.14 | typeof value === 'number' && !Number.isInteger(value) | Double | 0.0 |
"hello" | typeof value === 'string' | String | null |
[...] (空数组) | Array.isArray(value) && value.length === 0 | List<Object> | new ArrayList<>() |
["a","b"] | Array.isArray(value) && typeof value[0] === 'string' | List<String> | new ArrayList<>() |
[1,2,3] | Array.isArray(value) && typeof value[0] === 'number' | List<Integer> | new ArrayList<>() |
[{...},{...}] | Array.isArray(value) && typeof value[0] === 'object' | List<Xxx> | new ArrayList<>() |
{...} (嵌套对象) | typeof value === 'object' && !Array.isArray(value) | Xxx (独立类) | new Xxx() |
4 种序列化注解库对比表
工具支持的 4 种主流 Java JSON 序列化注解库,根据项目使用的框架选择:
| 注解库 | 生成的注解 | 自动 import | 适用场景 |
|---|---|---|---|
无注解 | 无(纯净 POJO) | 无 | 无框架依赖场景;需手动用 jackson-databind 等通用库反序列化 |
Gson | @SerializedName("user_name") | import com.google.gson.annotations.SerializedName; | Android 应用、Google Gson 库生态、Retrofit + Gson |
Jackson | @JsonProperty("user_name") + 日期字段 @JsonFormat | import com.fasterxml.jackson.annotation.JsonProperty; + JsonFormat | Spring Boot 默认序列化框架、Web 后端 API 接口 |
Fastjson | @JSONField(name = "user_name") | import com.alibaba.fastjson.annotation.JSONField; | 阿里巴巴生态、Java 内部系统、高性能反序列化场景 |
Lombok | 类级 @Data (+ 可选 @Builder / @NoArgsConstructor / @AllArgsConstructor) | import lombok.Data; (+ 其他) | 所有需要样板代码精简的项目;与任意序列化库组合使用 |
4 种字段命名策略对比表
工具支持的 4 种字段命名转换策略,针对不同 JSON 来源优化:
| 策略 | 输入示例 | 输出 Java 字段名 | 适用场景 |
|---|---|---|---|
保持原样 | user_name | user_name | JSON 字段名已符合 Java 命名规范(如内网 API);或团队习惯 snake_case 风格 |
转 camelCase | user_name | userName | Java 推荐命名风格;蛇形命名后端 API(如 Python / Go 后端) |
全小写 | UserName | username | 对接特殊数据库字段(不常见) |
UPPER_SNAKE | user_name | USER_NAME | Java 常量定义(public static final);一般 POJO 字段不推荐 |
Lombok @Data 模式 vs 传统 POJO 模式对比
对比两种代码风格的行数、可读性、依赖:
| 对比项 | Lombok @Data 模式 | 传统 POJO 模式 |
|---|---|---|
源代码行数 | ~5 行(4 个注解 + 字段) | ~50 行(每个字段 4-5 行 getter/setter + 类) |
可读性 | 极高(一眼看到所有字段和注解) | 中等(大量样板代码) |
编译产物 | 完整字节码(IDE / javac 通过 lombok 处理器生成) | 完整字节码(直接编译) |
运行时依赖 | 需要 lombok 依赖(编译期) | 无额外依赖 |
IDE 支持 | 需安装 Lombok 插件(IntelliJ / Eclipse) | 原生支持 |
代码维护成本 | 低(添加字段即可) | 高(每个字段需手动添加 getter/setter) |
适用团队 | 已引入 Lombok 的中大型项目 | 拒绝 Lombok 注解的项目;老项目维护 |
Privacy & Security
本 JSON 转 Java 工具所有 JSON 解析、Java 类生成、ZIP 打包操作完全在你的浏览器本地通过 JavaScript(JSZip)完成,输入的 JSON 数据和生成的 Java 代码都不会被上传到任何服务器,也不会被记录、缓存或存储到云端。包含内部接口字段、未上线业务结构、未公开 API 响应的敏感 JSON 都可以放心使用,关闭页面即清除全部数据。
Authoritative References
- MDNMDN - JSON.parse / JSON.stringify
- OracleOracle Java 教程 - 类与对象
- OracleOracle Java 教程 - 封装性
- LombokLombok 官方文档 - @Data
- LombokLombok 官方文档 - @Builder
- JacksonJackson 官方文档 - ObjectMapper
- GoogleGson 用户指南
- AlibabaFastjson GitHub
- SpringSpring Boot 官方 - @RequestBody
- JSON 压缩
- CSV 转 JSON
- JSON 转 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON扁平化
- JSON 格式化
- JSON 生成器
- JSONPath 查询
- JSON 合并
- JSON 修复
- JSON Schema 校验
- JSON 排序
- JSON Stringify
- JSON 转 HTML
- JSON 转 Java
- JSON 转 Markdown
- JSON 转 SQL
- JSON 转 TOML
- JSON 转 TypeScript
- XML 转 JSON
- JSON 转 XML
- YAML 转 JSON
- JSON 转 YAML
- JSON 转 Python
- JSON 转 Go
- JSON 转 Rust
- JSON 转 Swift
- JSON 转 C#
- JSON 转 C++
- JSON 转 PHP