You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman获取接口响应不全,移除@JsonIgnore后Dish列表返回异常截断

问题结论

该问题不是Controller层缺陷导致,核心原因是Jackson未正确配置Java 8时间类型LocalDateTime的序列化逻辑,序列化过程抛出异常导致响应输出被中途截断,最终返回不完整的JSON内容。

现象解释
  • 未加@JsonIgnore时返回的截断内容,并非接口只查询到1条菜品数据:Jackson序列化JSON时是直接向HTTP响应输出流逐段写入内容,当序列化到第一条菜品的updateDate字段时触发序列化异常,输出流直接中断,已经写入缓冲区的半截JSON(也就是你看到的只有1条数据、字段名后没有值的非法结构)就被直接返回给了客户端。
  • 给updateDate加上@JsonIgnore后,Jackson序列化时直接跳过该字段,不会触发时间类型的序列化异常,所有菜品数据就能正常完整返回。

注意:你在字段上加的@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")仅对Spring的请求参数绑定(比如表单提交、URL参数传值)生效,完全不影响Jackson的JSON序列化/反序列化逻辑,无法解决这个问题。

修复方案

按以下步骤处理即可解决:

  • 确认依赖:如果是Spring Boot项目,引入spring-boot-starter-web时默认已经集成了jackson-datatype-jsr310(Java 8时间类型的Jackson支持模块),无需额外引入;如果是非Spring Boot项目,手动补充该Jackson模块的依赖即可。
  • 字段级配置:移除updateDate字段上的@JsonIgnore注解,替换为Jackson的时间格式化注解:
@Column(name = "update_date", nullable = false)
@NotNull
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime updateDate;
  • 全局配置(可选):如果需要统一项目中所有LocalDateTime类型的JSON格式,无需在每个字段上加注解,直接在Spring配置文件中添加全局Jackson配置即可,properties格式配置示例:
spring.jackson.date-format=yyyy-MM-dd HH:mm
spring.jackson.serialization.write-dates-as-timestamps=false
  • 额外校验:确认数据库中所有菜品记录的update_date字段实际没有null值,你在实体字段上标记了@NotNull,如果查询出null值也可能触发序列化异常中断响应。

内容的提问来源于stack exchange,提问作者VadiMayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 22:21:58