JSON 转 Java 类(POJO 或 Record)

从 JSON 创建带 getter 和 setter 的 Java POJO 或 Java 16 record,对特殊键使用 Jackson @JsonProperty,并生成嵌套静态类。免费。

嵌套类型生成为静态内部类。不是合法 Java 名称的键会加上 @JsonProperty (Jackson)。

完全在浏览器中运行,您的数据不会被上传。

相关工具

查看全部

什么是 JSON 转 Java 类?

根据 JSON 示例生成 Java 模型类,可以是带私有字段、getter 和 setter 的经典 POJO,也可以是简洁的 Java record。嵌套对象会成为根类型内部的静态嵌套类(或嵌套 record)。

如何使用 JSON 转 Java 类

  1. 将 JSON 示例粘贴到 JSON 输入中(或点击加载示例/打开文件)。
  2. 设置根类型名称(默认为 Root)。
  3. 选择输出风格:带 getter/setter 的类 (Jackson) 或 Record 记录类(Java 16+)。
  4. 复制生成的 Java 代码,或下载为文件。

示例

输入
{"id":1,"name":"A","tags":["x"]}
输出
import java.util.List;

public class Root {
    private long id;
    private String name;
    private List<String> tags;

    public long getId() { return id; }
    public void setId(long id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public List<String> getTags() { return tags; }
    public void setTags(List<String> tags) { this.tags = tags; }
}

何时使用 JSON 转 Java 类

适合为 Spring、Jackson 或 Gson 代码搭建 DTO 脚手架。日期(LocalDate、Instant)和枚举等类型需手动调整;如果你的代码库习惯如此,也可以把嵌套类拆分到单独的文件。

JSON 转 Java 类 的工作原理

程序会递归遍历示例,每个位置都会收集见到过的类型。对象数组会合并为一个类型:在部分元素中缺失的键变为可选,在某处为 null 的键变为可空,整数与小数混合会变为浮点类型,其他混合了多种类型的情况则回退为动态类型。嵌套对象成为各自命名的类型(键名的 PascalCase,数组键取单数:orders → Order),名称冲突时添加数字后缀。Java 输出对必填值使用 long/double/boolean 基本类型,对可空或可选的值使用装箱的 Long/Double/Boolean,另有 String,数组使用 List<T>,动态值使用 Object。字段名为 camelCase;当它与 JSON 键不同时,会添加 Jackson 的 @JsonProperty("key") 注解,并自动加入对应的 import。

常见用例

  • 为 Spring Boot REST 客户端创建 DTO
  • 为 Kafka 消费者建立 JSON 消息模型
  • 为不可变配置生成 record
  • 在 Java 中搭建测试数据的起步代码

常见问题

我需要 Jackson 吗?

只有当某些键不是有效的 Java 名称时才需要;此时会使用 @JsonProperty。否则这些类就是普通 Java 类,也能配合 Gson 使用。

为什么用 long 而不是 int?

JSON 数字可能超出 int 的范围(ID、时间戳)。long 可避免溢出;如果确定数值很小,可以改为 int。

record 能配合 Jackson 使用吗?

可以,Jackson 2.12+ 通过规范构造函数反序列化 Java record。

探索更多分类