开发者工具 · JSON / 数据格式
JSON 转 Java
POJO/Lombok/Jackson
Java 类将在这里呈现 —— 点「示例」试试关于本工具
About从后端接口返回的 JSON 里拿到的字段名是 snake_case,但 Java 实体类习惯用 camelCase——手动改一个两个还行,几十个字段逐个改就太容易漏了。这个工具直接把 JSON 转成带 @JsonProperty 注解的 POJO,支持 Lombok 和 Jackson 两种风格,生成后复制即用。所有解析都在浏览器本地完成,JSON 内容不会离开电脑。
使用指南
Getting Started使用步骤
- 1在左侧编辑框粘贴或键入 JSON 文本,右侧实时预览生成的 Java 类代码,无需手动触发
- 2点击「POJO」「Lombok」「Jackson」三个标签切换输出风格,代码结构随标签即时更新
- 3勾选「生成构造函数」「生成 toString」等选项,右侧代码区同步追加对应方法
- 4点击代码区右上角的「复制」图标,将当前 Java 代码写入剪贴板,粘贴到 IDE 即可使用
输入输出示例
| 输入 | 输出 | 说明 |
|---|---|---|
| {"name":"张三","age":30,"city":"北京"} | public class Person { private String name; private int age; private String city; } | 常规:最简对象,验证基本字段类型映射(String/int),无嵌套 |
| {"id":1,"title":"JSON转Java","tags":["工具","开发"],"published":true} | public class Article { private int id; private String title; private List<String> tags; private boolean published; } | 常规:含数组(List<String>)和布尔类型,验证集合与基本类型处理 |
| {} | public class EmptyClass { } | 边界:空对象,验证工具能否生成无字段的 POJO 类 |
| {"value":null} | public class NullValue { private Object value; } | 边界:null 值字段,验证工具是否自动推断为 Object 类型(而非报错) |
| {"@type":"com.example.User","name":"李四"} | public class User { private String name; } | 边界:JSON 含 @type 等元字段,验证工具是否忽略或保留(通常忽略,只生成业务字段) |
| {"name":"测试","age":"25"} | public class Test { private String name; private String age; } | 易错:age 在 JSON 中是字符串而非数字,工具按原始类型映射为 String,用户需自行校验 |
| {"user-name":"admin","user.email":"admin@test.com"} | public class User { @JsonProperty("user-name") private String userName; @JsonProperty("user.email") private String userEmail; } | 易错:JSON key 含连字符和点号,工具自动生成 @JsonProperty 注解映射到合法 Java 字段名 |
常见错误对照
1.JSON 键名未用双引号包裹
{ name: "张三", age: 25 }{ "name": "张三", "age": 25 }JSON 规范要求所有键名必须用双引号包裹。无引号的键名是 JavaScript 对象字面量写法,不是合法 JSON,工具无法解析。
2.字符串值用了单引号
{ "name": '张三' }{ "name": "张三" }JSON 标准只允许双引号包裹字符串值。单引号是 JavaScript 语法,JSON 解析器会直接报错。
3.末尾多余逗号
{ "name": "张三", "age": 25, }{ "name": "张三", "age": 25 }JSON 不允许末尾逗号(trailing comma)。虽然 JavaScript 数组/对象允许,但 JSON 解析器遇到会抛出语法错误。
4.数字值加了引号变成字符串
{ "age": "25" }{ "age": 25 }加引号后 age 字段在 Java 中会生成 String 类型而非 int/Long,导致后续数值计算或数据库映射类型不匹配。
5.布尔值写成小写或引号形式
{ "active": "true" } 或 { "active": true }{ "active": true }JSON 布尔值必须是小写 true/false。写成字符串 "true" 会生成 String 字段;写成大写 True 则解析失败。
6.嵌套 JSON 未正确转义反斜杠
{"path": "C:\Users\test"}{"path": "C:\\Users\\test"}JSON 字符串中反斜杠是转义字符。Windows 路径的单个反斜杠会被解释为转义序列,必须用 \\ 表示字面反斜杠。
7.日期格式未标准化
{ "birthday": "2024/1/1" }{ "birthday": "2024-01-01" }Jackson 默认日期格式为 ISO 8601(yyyy-MM-dd)。非标准格式(如斜杠分隔、缺少前导零)会导致反序列化失败或生成错误的 Date 字段。
8.数组元素类型不一致
{ "list": [1, "two", true] }{ "list": [1, 2, 3] }工具会根据 JSON 数组推断 Java 泛型类型。混合类型会导致生成 List<Object>,失去类型安全,后续使用需频繁类型转换。
9.null 值字段未考虑包装类型
{ "score": null } → 期望 int score使用 Integer score 或提供默认值JSON 的 null 不能赋值给 Java 基本类型(int/boolean)。工具会生成包装类型(Integer/Boolean),若业务要求基本类型需手动处理。
10.字段名包含 Java 关键字
{ "class": "一班", "new": true }{ "className": "一班", "isNew": true }class、new、static 等是 Java 保留字,不能作为变量名。工具会添加 @JsonProperty 注解映射,但代码可读性差,建议 JSON 端直接改名。
工作原理
How It Works核心公式
Java 类定义 = @Data @AllArgsConstructor @NoArgsConstructor @Builder + 字段声明 + Jackson 注解
变量说明
@DataLombok 生成 getter/setter/toString 等@AllArgsConstructorLombok 生成全参构造器@NoArgsConstructorLombok 生成无参构造器@BuilderLombok 生成建造者模式字段声明JSON 键名对应 Java 类型+变量名Jackson 注解如 @JsonProperty 映射 JSON 键名
示例
输入 JSON {"name":"张三","age":25},工具生成:@Data @AllArgsConstructor @NoArgsConstructor @Builder public class Person { @JsonProperty("name") private String name; @JsonProperty("age") private int age; }。字段 name 映射 JSON 键 name,age 映射 age,Lombok 注解自动生成构造器与 getter/setter。
常见问题
Q & A问我有一段 JSON 带注释和尾逗号,直接贴进去报错怎么办?+
标准 JSON 不允许注释(// 或 /* */)和尾逗号(如 "a": 1, )。本工具按严格 JSON 解析,遇到会直接报红。解决办法:复制前先用编辑器或脚本去掉注释和尾逗号;如果 JSON 是别人给的且无法修改,可先在线 JSON 校验工具清洗一遍再贴过来。本工具不自动清洗,因为会影响字段映射准确性。
问生成的 Java 类里字段全是小写开头的驼峰,但我的 JSON 字段是下划线命名,怎么对应?+
本工具默认将 JSON 字段名直接转为 Java 驼峰(如 user_name → userName)。如果你需要保留原字段名(如 user_name 对应到 Java 的 user_name 字段),可在结果区勾选“使用 Jackson @JsonProperty”选项,工具会自动在字段上添加 @JsonProperty("user_name") 注解,这样 Jackson 反序列化时就能正确映射。
问为什么生成的类里没有 getter/setter,只有一堆 public 字段?+
本工具支持三种输出模式:POJO(纯字段 + getter/setter 手写)、Lombok(字段 + @Data)、Jackson(字段 + 注解)。默认是 Lombok 模式,只生成字段和 @Data 注解,不显式写 getter/setter。如果你需要看到完整 getter/setter 代码,请在结果区切换为“POJO”模式。如果项目不用 Lombok,记得先切模式再复制。
问JSON 里有个字段是 null 或空数组,生成的类会不会漏掉?+
不会漏掉。本工具解析 JSON 时,只要字段名在 JSON 中出现过(即使值为 null),都会生成对应 Java 字段。但如果 JSON 里某个字段完全不存在(比如对象里根本没这个键),工具无法得知它的存在,生成的类就不会包含。建议提供一份包含所有字段的完整 JSON 样本(含空值),避免遗漏。数组类型统一生成 List<T>,即使实际数据是空数组。
问生成的 Java 类里 import 包全不全?我复制过去编译报找不到类。+
本工具生成的代码包含必要 import 语句:Jackson 模式会引入 com.fasterxml.jackson.annotation.*;Lombok 模式引入 lombok.*;POJO 模式无额外 import。但如果你项目中 Jackson 或 Lombok 的 jar 没引入,编译会报错。另外,泛型类型如 List、Map 也会自动 import。如果遇到编译报错,先确认项目中是否已添加对应依赖(Maven/Gradle)。
问JSON 嵌套特别深,生成的类文件会很多,能一次全生成吗?+
可以。本工具会递归解析嵌套 JSON,为每一层对象生成独立的 Java 类文件。结果区会按“类名.java”分块展示,直接全选复制即可。但注意:如果嵌套超过 5 层,生成的类数量可能较大(如每层一个类),建议先确认是否需要全部类,或只取顶层类手动拆分。本工具暂不支持按需选择生成某几层。
问我 JSON 里有个字段叫 class,生成的 Java 类里冲突了怎么办?+
JSON 字段名 class 在 Java 中是保留关键字,直接作为字段名会编译报错。本工具检测到这种情况时,会自动在字段名后加下划线(变成 class_),并添加 @JsonProperty("class") 注解(Jackson 模式下)以保证序列化/反序列化正确。如果是 Lombok 或 POJO 模式,字段名就是 class_,需手动处理映射。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。