接口返回字段为 `null` ,排除掉的处理方法
在微服务架构中,接口的返回值常常需要传递给前端或其他服务进行处理。如果接口中包含了大量为 null
的字段,这不仅会增加数据传输的带宽,造成不必要的浪费,还会让前端处理变得更加复杂。因此,在设计接口返回时,去除无效的 null
字段是一个很重要的优化步骤。
常见的两种方法来解决这个问题分别是使用 Jackson 提供的注解和在配置文件中设置全局配置。
方法一:使用 @JsonInclude(JsonInclude.Include.NON_NULL)
注解
Jackson 是 Spring Boot 默认的 JSON 处理库。我们可以通过在类上添加 @JsonInclude(JsonInclude.Include.NON_NULL)
注解,来排除所有为 null
的字段。
示例代码:
import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL) // 排除 null 字段
public class Data {
private Integer id;
private String name;
private String mail;
// Getters and Setters
}
解释:
-
@JsonInclude(JsonInclude.Include.NON_NULL)
:该注解用于告诉 Jackson 在序列化对象时,排除所有为null
的字段。这样,返回给前端的数据将只包含那些有值的字段,避免了不必要的null
字段。
这种方式适用于单个对象,方便对每个对象进行细粒度的控制。
方法二:在配置文件中设置全局配置
如果希望全局生效,而不需要在每个类上都加注解,可以通过修改 application.yml
或 application.properties
文件中的配置,来实现全局排除 null
字段。
示例配置:
spring:
jackson:
# json 序列化时,排除值为 null 的属性
default-property-inclusion: non_null
# 配置 Date 类的时间格式(可选)
date-format: yyyy-MM-dd HH:mm:ss
# 配置 Date 类的时区(可选)
time-zone: GMT+8
解释:
-
spring.jackson.default-property-inclusion: non_null
:此配置项告诉 Jackson 在序列化对象时,默认排除所有值为null
的字段。这会影响整个项目中的 JSON 序列化行为。 -
date-format
:配置日期格式,如果项目中涉及到日期字段,可以通过此配置指定日期的格式。 -
time-zone
:配置时区,指定日期字段使用的时区。
这种方式适用于项目中的所有类,并且更简洁,不需要在每个类中单独加注解。
总结
去除 null
字段的返回数据不仅能够减少不必要的带宽浪费,还能让前端的处理变得更加清晰和简单。根据实际需求,可以选择两种方式中的任意一种进行处理:
- 对于单个类,可以使用
@JsonInclude(JsonInclude.Include.NON_NULL)
注解来精确控制。 - 对于全局设置,可以通过修改
application.yml
或application.properties
文件来进行统一配置。
通过这种方式,我们可以优化接口返回的数据结构,提升性能,并减少前端的负担。
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据