跳到主内容
UniKit

JSON 转 Java 类

JSON 自动生成 Java POJO 类

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

选项
生成的 Java 代码
package com.example.model;

import java.util.List;

public class Root {
    public int id;
    public String name;
    public boolean isActive;
    public double score;
    public RootOwner owner;
    public List<String> tags;
    public List<RootItems> items;
    public Object meta;

    public static class RootOwner {
        public String name;
        public Object email;
    }

    public static class RootItems {
        public String sku;
        public double price;
        public String note;
    }
}

结果摘要: 类型数 3 · 字段数 13 · 命名冲突 0

这个工具能做什么

  • 写 Spring / Jackson 接口的入参出参模型时,把前端传过来的 JSON 样例直接变成 POJO,省掉手写字段和 getter 的样板代码。
  • 需要区分「字段缺失」和「值为 0」时,可空字段会生成包装类型(Integer / Double / Boolean),null 能安全地存进去。
  • 嵌套结构会自动生成为根类里的 public static class,一个 .java 文件就能装下整个模型,符合 Java「一个文件一个 public 类」的限制。
  • 字段名与 JSON 键不一致时打开 @JsonProperty 开关,注解里会写回原始键名,Jackson 反序列化时不会丢字段。

示例

输入

{"id":1,"name":"UniKit","tags":["a","b"]}

输出

package com.example.model;

import java.util.List;

public class Root {
    public int id;
    public String name;
    public List<String> tags;
}

数组统一映射成 List<T>,可空位置会自动装箱成 Integer / Double / Boolean;有数组字段时才会加上 import java.util.List。

常见问题

嵌套对象为什么写成 static class 而不是单独一个文件?

Java 规定一个 .java 文件只能有一个 public 类,所以嵌套对象会作为根类的 public static class 生成,整体复制到一个文件里即可编译。想拆成独立文件,把每个 static class 剪出来改名成同名 .java 就行。

为什么有的字段是 Integer 而不是 int?

因为该键在部分数组元素里是 null,或者它只在部分数组元素里出现,基本类型 int 无法表达「没有值」,这些位置会自动装箱成包装类型。如果这个键在所有样例里都只是 null,没有类型线索,字段会退化成 Object 而不是 Integer。确定字段一定存在时可以手动改回 int。

@JsonProperty 注解是什么时候加的?

勾选选项后,只有当生成字段名和原始 JSON 键不一致(命名约定改写过、或者键名含 - 等非法字符)时才会加。字段名与键名相同时不加,避免无意义的注解。

JSON 里有 Java 保留字做键名会怎样?

class、static、default 这类保留字会自动补一个下划线(class 变成 class_),保证代码能编译。想还原成原始键名,勾上 @JsonProperty,注解里会写回 class。

我的 JSON 会被上传吗?

不会。解析和代码生成全在浏览器本地用 JavaScript 完成,不发起任何网络请求,断网也能用。

关键词:jsonjavapojojacksonjsonpropertyjson to javaJSON 转 Java实体类嵌套类代码生成

同类工具