从 JSON 样例会生成哪些 Java 类型?
| JSON 值 | 默认 Java 类型 | 需要留意什么 |
|---|---|---|
"A-01" | String | 日期、UUID、金额字符串可能需要换成领域类型。 |
42 | Integer | 大 ID、计数和金额不一定适合 Integer。 |
89.9 | Double | 涉及金额时通常应改为 BigDecimal。 |
[{"sku":"A"}] | List<Item> | 数组只按第一个元素推断,异构数组需要人工建模。 |
{"city":"昆明"} | 独立 class | 按项目约定决定是否改为 static inner class、record 或 DTO。 |
生成代码后,Spring Boot 项目通常还要补什么?
Jackson 字段映射
接口使用 user_name、连字符或缩写时,按项目策略增加 @JsonProperty,或配置全局命名策略。
访问器或 Lombok
当前结果是 public 字段。若项目使用私有字段、getter/setter、@Data 或 record,请按团队规范调整。
时间与金额
根据接口定义转换为 Instant、LocalDateTime、BigDecimal 等,不要只依赖样例值。
运行时验证
类型生成不保证反序列化成功。至少使用一份真实响应运行 Jackson 或 Gson 测试。
这不是完整的 Java DTO 生成器
页面不会生成包名、构造器、builder、验证注解、继承关系或 Jackson 自定义反序列化器。它解决的是“拿到 JSON 后先得到一份能编辑的字段清单”,不是替你定义系统边界。
对于外部接口,先把生成类放进临时 DTO 层并跑反序列化测试,再决定是否进入领域模型。不要直接把第三方响应形状当作核心业务对象。
常见问题
- 会生成 getter、setter 或 Lombok 注解吗?
- 不会。当前生成 public 字段和基础 class。访问器、Lombok 或 record 应由项目代码风格决定。
- 为什么没有 JsonProperty 注解?
- 工具无法知道你的项目使用 Jackson、Gson 还是其他框架,也不能判断全局命名策略。字段映射需要在项目中明确。
- 空数组和 null 应该怎么处理?
- 空数组没有元素类型,null 也没有真实字段类型。请根据接口文档手动替换通用类型并补充默认策略。