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 存储

使用方法

  1. 在左侧编辑器粘贴 JSON 对象(推荐)或数组,或点击「Sample」加载中文示例(含嵌套 address / company / tags)
  2. 点击工具栏「Settings」按钮(或带类名的按钮),在弹窗中选择:① 设置根类名(如 User)和包名(如 com.example.entity);② 选择序列化注解库(Gson / Jackson / Fastjson / Lombok / 无);③ 选择代码风格(toString / equals / hashCode / 构造器 / Serializable);④ 选择字段命名策略(保持原样 / camelCase / 全小写 / UPPER_SNAKE)
  3. 工具会在 400ms 内自动转换,右侧显示所有生成的 Java 类(每个类一个独立卡片,标题栏实时显示当前注解库和 Lombok 徽章);如 JSON 格式错误会显示「修复 JSON」按钮
  4. 检查生成的类名、字段名和注解是否符合预期;如需调整可修改源 JSON 的 key 名或重新打开 Settings 修改选项
  5. 满意后可点击单个类的「复制」按钮粘贴到 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

java

Spring 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 类型字段默认值
nullvalue === nullObjectnull
true / falsetypeof value === 'boolean'Booleanfalse
42typeof value === 'number' && Number.isInteger(value)Integer0
3.14typeof value === 'number' && !Number.isInteger(value)Double0.0
"hello"typeof value === 'string'Stringnull
[...] (空数组)Array.isArray(value) && value.length === 0List<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") + 日期字段 @JsonFormatimport com.fasterxml.jackson.annotation.JsonProperty; + JsonFormatSpring 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_nameuser_nameJSON 字段名已符合 Java 命名规范(如内网 API);或团队习惯 snake_case 风格
转 camelCaseuser_nameuserNameJava 推荐命名风格;蛇形命名后端 API(如 Python / Go 后端)
全小写UserNameusername对接特殊数据库字段(不常见)
UPPER_SNAKEuser_nameUSER_NAMEJava 常量定义(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