在开发中,当某些字段为null时,在传递给前端后,为null的字段为过滤掉,不会返回给前端,可以由前端处理,也可以由后端处理,后端处理步骤如下
- package com.shuizhu.utils;
-
- import com.fasterxml.jackson.core.JsonGenerator;
- import com.fasterxml.jackson.databind.JsonSerializer;
- import com.fasterxml.jackson.databind.SerializerProvider;
- import org.springframework.context.annotation.Configuration;
-
- import java.io.IOException;
-
- /**
- * 返回前端时,把null字段修改为“”空字符串
- * @author 睡竹
- * @date 2022/8/25
- */
- @Configuration
- public class JacksonNotNullAsHorizontalBarSerializer extends JsonSerializer
{ -
- @Override
- public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
- if (null == value) {
- jsonGenerator.writeString("");
- }else {
- jsonGenerator.writeString(value);
- }
- }
- }
如:
- package com.shuizhu.domain.Demo;
-
- import com.shuizhu.utils.JacksonNotNullAsHorizontalBarSerializer;
- import com.fasterxml.jackson.databind.annotation.JsonSerialize;
- import lombok.Data;
-
- import java.io.Serializable;
- import java.math.BigDecimal;
-
- /**
- * @author 睡竹
- * @date 2022/9/13
- */
- @Data
- public class Demo implements Serializable {
- private static final long serialVersionUID = -1L;
-
- private String name;
-
- //nullsUsing 为自定义类,上面那个类
- @JsonSerialize(nullsUsing = JacksonNotNullAsHorizontalBarSerializer.class)
- private BigDecimal value1;
- @JsonSerialize(nullsUsing = JacksonNotNullAsHorizontalBarSerializer.class)
- private BigDecimal value2;
- }
被注解标注的字段,在返回给前端后,出现了两次!!!!
如下:
{
"retCode": "0000",
"retMsg": "",
"data": {
"rows": [
"name":"张三",
"value1":500.00,
"value2":1000.20,
"value1":500.00,
"value2":1000.20,
]
}
}
原因:JsonSerialize注解与lombok的Data注解存在冲突!!!从而导致被JsonSerialize标注的字段重复返回
解决:把data注解去掉,手动写getter、setter、toString方法即可