JSON 转 Java 实体类(POJO)
免费在线 JSON 转 Java 实体类工具,纯前端本地处理,数据不上传服务器。粘贴 JSON 自动生成带 getter / setter 的 Java 类,支持 Lombok @Data、嵌套对象生成静态内部类、字段名非法时自动加 Jackson @JsonProperty。
Ctrl / Cmd + Enter 可立即生成。
为什么默认用包装类型(Integer)而不是基本类型(int)
JSON 里的字段可以是 null,而 int 装不下 null。
反序列化 { "age": null } 到一个 int age 字段时,
Jackson 会直接抛异常。用 Integer 就没事。
确实确定字段不会为空、又在意那点装箱开销时,再勾上「用基本类型」。
注意 List<T> 的泛型参数永远是包装类型,
Java 不允许 List<int>。
「嵌套为静态内部类」和「平级类」的区别
嵌套(默认):所有类都在一个文件里,粘贴进去就能编译。
子类写成 public static class Profile 放在根类内部。
平级:每个类都是独立的 public class。
⚠️ 但 Java 一个文件只能有一个 public 类,
所以输出里会提醒你「把每个类分别复制到自己的 .java 文件里」。
什么时候会加 @JsonProperty
只有 JSON 的键不是合法的 Java 标识符时才加,比如
my-key、1st、class(Java 关键字)。
这时字段会被重命名,并用注解把原始键名标回去。
⚠️ 这个注解不能省:字段名和 JSON 键不一致又没注解的话, Jackson 反序列化会静默拿到 null——不报错,但数据全是空的, 非常难查。
键名本身就合法时不会加注解,少一层噪音。
小数用的是 Double,金额场景请注意
JSON 数字默认推成 Double。Jackson 默认也是走 double,
直接给 Double 最省事。
⚠️ 但如果字段是金额,Double 会有精度问题
(0.1 + 0.2 那类)。这种情况请手动改成
BigDecimal,并在 Jackson 上做对应配置。
金额不要用 double,这是常识,但生成器不该替你决定——所以这里只提示,不自动改。
它不会替你猜日期
"2024-03-01" 生成 String,不会变成
LocalDate 或 Date。
「像日期的字符串」太多了——版本号、批次号、日期区间。猜错的话, 要到反序列化时才发现,而且报错信息跟日期毫无关系。 需要日期类型的话手动改一下即可。