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

Spring Boot REST API如何在JSON响应中包含Null值及响应缺失Null值的原因排查

问题原因与解决方案

这问题我之前做Spring Boot REST API时也碰到过,核心原因是Jackson的默认序列化规则会忽略值为null的字段,结合你的代码细节,具体分析和解决方法如下:

为什么null字段没出现在响应里?

Spring Boot默认使用Jackson作为JSON序列化工具,它的默认配置是NON_NULL——也就是只序列化值不为null的字段。你的User实体中empNo字段为null,经过ModelMapper映射到UserDTO后,DTO的empNo依然是null,Jackson就自动把这个字段从最终的JSON响应里剔除了,所以你看不到它。

另外注意到你的UserDTO里有fullName字段,但User实体中没有对应的属性,映射后这个字段值也是null,同样会被Jackson忽略;如果你希望它也出现在响应里,下面的方案也能一并解决。

解决方案

1. 全局配置(推荐,全项目生效)

如果你希望整个API的所有JSON响应都包含null字段,可以在配置文件里修改Jackson的规则:

  • 若使用application.properties:
spring.jackson.default-property-inclusion=ALWAYS
  • 若使用application.yml:
spring:
  jackson:
    default-property-inclusion: ALWAYS

ALWAYS表示不管字段值是什么(包括null),都会被包含在JSON响应中。

2. 局部配置(仅针对特定DTO生效)

如果只想让UserDTO的null字段显示出来,可以直接在DTO类上添加@JsonInclude注解:

@Data
@JsonInclude(JsonInclude.Include.ALWAYS)
public class UserDTO {
    private Long id;
    private String username;
    private String fullName;
    private String userRole;
    private String empNo;
}

这样只有这个类的序列化会包含null字段,其他DTO不受影响。

验证

配置完成后,调用接口就能得到你预期的响应:

{ "id": 1, "username": "admin", "fullName": "Geeth Gamage", "userRole": "ADMIN", "empNo": null }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:29:08