Skip to content
代码工具2026-08-283 分钟阅读

对接接口返回一段 JSON,要生成对应的 Java 实体类(POJO)。手写几十个字段 + getter/setter + 注解,既枯燥又易错。能不能自动转

能。下面讲清楚 JSON → Java 类的类型映射注解选择,并一步步用本地工具生成。

JSON 类型到 Java 类型的映射

| JSON 类型 | Java 类型 | 备注 | |---|---|---| | 对象 {} | 嵌套 class / Map<String,Object> | | | 数组 [] | List<T> | 推荐用 List 而非数组 | | 字符串 "a" | String | | | 整数 | Long / Integer | 大数用 Long,避免溢出 | | 小数 | Double / BigDecimal | 金额用 BigDecimal | | 布尔 | Boolean | | | null | 对应包装类型(如 Integer) | 用包装类区分 null 与 0 | | 混合数组 | List<Object> | 尽量避免 |

序列化注解怎么选

Java 生态常用三套 JSON 库,注解写法不同:

| 库 | 注解 | 示例 | |---|---|---| | Jackson | @JsonProperty("name") | 最主流,Spring 默认 | | Gson | @SerializedName("name") | Android 常用 | | 原生 | 字段名需与 JSON 一致 | 不推荐,灵活性差 |

Spring Boot 项目默认 Jackson,下面示例都用 Jackson。

一步步生成(无需装插件)

用本站 JSON 转 Java 工具,浏览器本地完成,JSON 不上传:

  1. 打开 JSON 转 Java
  2. 粘贴 JSON(对象或数组)。
  3. 配置:
    • 根类名(如 UserOrderResponse);
    • 包名(如 com.example.dto);
    • 是否生成 Lombok @Data(省 getter/setter);
    • 注解风格(Jackson / Gson)。
  4. 点击转换,得到完整 Java 类,可直接粘进项目。
  5. 需要其他语言?可再用 JSON 转 GoJSON 转 TypeScript

完整例子

输入 JSON:

{
  "id": 1024,
  "name": "Alice",
  "vip": true,
  "tags": ["java", "api"],
  "address": {
    "city": "Shanghai",
    "zip": "200000"
  }
}

生成的 Java 类(Jackson + Lombok):

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

@Data
public class User {
    @JsonProperty("id")
    private Long id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("vip")
    private Boolean vip;
    @JsonProperty("tags")
    private List<String> tags;
    @JsonProperty("address")
    private Address address;
}

@Data
public class Address {
    @JsonProperty("city")
    private String city;
    @JsonProperty("zip")
    private String zip;
}

进阶建议

  • 金额用 BigDecimaldouble 有精度问题,涉钱务必用 BigDecimal
  • 大整数用 Long:JSON 数字超过 int 范围(21 亿)会溢出。
  • 先格式化:杂乱 JSON 先用 JSON 格式化工具 整理,类型推断更准。
  • 区分 null 与零值:用包装类(Integer 而非 int),否则无法判断字段是否返回。
  • 时间字段:JSON 时间多为字符串,Java 用 StringLocalDateTime + 自定义反序列化器。

常见问题

Q:数组元素类型不一致怎么办?List<Object>,自己再判断;或推动接口方统一结构。

Q:字段名是蛇形 user_name,Java 要用驼峰怎么办?@JsonProperty("user_name") 映射,Java 字段写 userName 即可。

Q:要不要 Lombok? 团队统一用 Lombok 能大幅减少样板代码;若项目禁用 Lombok,工具也可生成普通 getter/setter。

Q:List 和数组选哪个? 优先 List<T>,反序列化更灵活、支持动态长度;除非有明确性能/互操作要求才用数组。

小结

JSON 转 Java 实体类 = 按类型映射生成带 Jackson/Gson 注解的 POJO,注意金额用 BigDecimal、大数用 Long、null 用包装类。用本站的 JSON 转 Java 工具 在本地一键生成,JSON 不上传,更适合处理含敏感字段的接口数据。


广告