springboot接口返回的json字符串如何不显示null值字段
POSTMAN 测试接口时,默认字段值即使是null也显示出来,如何去掉更加简洁?这个跟POSTMAN无关,POSTMAN仅仅是展示response的body而已
思考:为什么要去掉null值的字段?在返回值给前端的时候是不是可以减少发送的数据的量从而节省带宽?
(国内的公司似乎并没有太注意这个,几乎都不配置让null值字段不显示)
我觉得显示也是有好处的,就是很清晰,很 “显式地” 告诉你这个字段的值是null,而并不是返回的结构中没有这个字段。
同理,在打印日志的时候,也会存在两难,打印某个对象的json,null值字段要不要打印呢? 打印了日志量大了,不打印则你不清楚是因为对象里就没有这个字段还是仅仅因为该字段的值是null。
springboot的接口,默认null值字段也是会出现在返回结果里的(并不会因为是null值而整个字段隐藏掉)
@GetMapping("/stu")
public Stu f() {
Stu stu = new Stu();
stu.setName("stone");
stu.setAge(null);
return stu;
}
返回,age依然显示
{
"name": "stone",
"age": null
}
在 properties 配置文件,如 application.properties 里加上如下,则能全局对于任何返回都生效
spring.jackson.default-property-inclusion=non_null
如果仅想针对某个类实现 “null值字段不出现”,则在类上用 @JsonInclude(JsonInclude.Include.NON_NULL)
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Stu {
private String name;
private Integer age;
}