跳到主要内容

代码迁移:JSON To Java类

根据 JSON 生成 Java 类:页面以 Kotlin 模式运行 json_typegen(WebAssembly),再把每个 data class 改写为带私有字段、全参构造函数、getter 和 setter 的 Java 类。

创建用 Jackson 反序列化 REST 响应的 POJO。

JSON

适用场景

  • 创建用 Jackson 反序列化 REST 响应的 POJO。
  • 根据示例数据为 Spring 控制器草拟 DTO 类。

使用方法

  1. 将 JSON 对象或数组粘贴到左侧编辑器。
  2. 查看生成的类:根类为 Root,嵌套对象会成为以其键名命名的独立类。
  3. 分别复制到各自的 .java 文件中(已包含 List 和 Jackson 的 import),必要时调整类型。

JSON

{
  "id": 42,
  "user_name": "ada",
  "active": true,
  "tags": ["admin", "editor"]
}

Java 类

import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Root {
	private Long id;
	@JsonProperty("user_name")
	private String userName;
	private Boolean active;
	private List<String> tags;

	public Root(Long id, String userName, Boolean active, List<String> tags) {
		this.id = id;
		this.userName = userName;
		this.active = active;
		this.tags = tags;
	}

	public Long getId() {
		return this.id;
	}

…

功能与限制

生成在浏览器中通过 WebAssembly 进行;没有设置项。

snake_case 键变为带 Jackson @JsonProperty 的 camelCase 字段;用到时会导入 Jackson 和 java.util.List。

数字映射为 Long 或 Double,布尔值映射为 Boolean;布尔 getter 使用 get 而不是 is。

null 值的类型为 Object,全为 null 的数组为 List<?>。了解实际数据后,请替换为具体类型。

FAQ

能转换根节点为数组的 JSON 吗?

可以。根会变为带 List<Root2> 字段的包装类 Root,数组元素变为类 Root2。

会处理可选字段吗?

能检测到部分数组元素中缺失的键,但 Java 输出会去掉可选标记,因此每个字段都是普通的可为 null 的包装类型。

会生成 Lombok 注解或 record 吗?

不会。只生成带显式构造函数、getter 和 setter 的普通类。

null 值是什么类型?

示例中为 null 的字段会变为 Object(private Object note;),因为无法推断出具体类型。提供含实际值的示例,即可得到 String、Long 或嵌套类。

规范与参考资料