在线JSON转Java类工具
把 JSON 生成 Java 类、字段名自动转 camelCase、非法 key 补 Jackson 注解、嵌套对象生成静态内部类
粘 JSON,得到一组 Java 类:字段名转成 camelCase,key 不是合法标识符时自动加 Jackson 注解。嵌套对象生成静态内部类,一个文件就能粘走。
类型是根据你粘的值推断的:整数是 Integer 或 Long,小数是 Double 或 BigDecimal,null 推断成 Object(无从知道它本该是什么)。空数组同理退化成 List<Object>。数组里某条记录缺字段不会报错——只要有一条带了这个键,字段就会生成。
关于JSON转Java类
把一段 JSON 粘进去,生成能直接编译的 Java 类:字段名转 camelCase,嵌套对象生成静态内部类,key 不合法(user_id、@type、class)时自动补 @JsonProperty。
这类工具的通病是"看着能用、跑起来字段全是 null"。 原因几乎都是字段名对不上:Java 标识符不允许 -、@、数字开头,而 JSON 的 key 什么都能有。所以这里的规则很硬——凡是 key 和字段名不一致,一律加 @JsonProperty("原key")。选「无注解」时不做这层映射,这时如果 key 不合法,页面会明确警告,而不是假装成功。
类型是从值推断的,有三处它本来就不可能知道。 null 推断成 Object——无从知道它本该是字符串还是嵌套对象;空数组推断成 List<Object>——没有元素可看;整数按取值范围在 Integer 和 Long 之间选。要更稳就切到 Long / BigDecimal 那档:金额不要用 Double,0.1 + 0.2 那套老问题在钱上是真会出事的。
嵌套是扁平化的。 所有嵌套类都作为根类的 public static class,不做深层嵌套——Java 的静态内部类可以引用兄弟类,扁平结构下不会出现「内部类的内部类」的作用域问题。代价是类名要在同一层唯一,重名会自动加数字后缀。
数组里字段不一致时以并集为准。 比如 orders 里第一条有 items、第二条没有,字段照样生成一次;缺的那条运行时是 null,工具不会替你补默认值。
常见问题
生成的代码能直接编译吗?
能。选 Jackson 档需要在项目里加 jackson-databind 依赖;选 Lombok 档需要 lombok。类名和包名自己改一下即可。
为什么字段名和我 JSON 里的不一样?
Java 标识符不允许连字符、@、数字开头,而且 user_id 这种写法也不符合 Java 命名惯例,所以统一转成 camelCase,再用 @JsonProperty 映射回原来的 key。
为什么不生成 record?
Java 14 之后的 record 要求字段不可变,Jackson 反序列化还需要额外配置(-parameters 编译参数)。POJO 覆盖面更广,先给这个。
数字类型选哪一档?
一般 Integer / Double 够用;金额、时间戳、超过 21 亿的 ID 用 Long / BigDecimal。金额用 Double 会丢精度。
最外层是数组怎么办?
支持。会把数组里的对象合并成同一个类,字段取并集,类名用你填的根类名。
会上传我的 JSON 吗?
不会。生成全在浏览器里完成,服务器不接触你的数据。