在开发中,当某些字段为null时,在传递给前端后,为null的字段为过滤掉,不会返回给前端,可以由前端处理,也可以由后端处理,后端处理步骤如下
1、新建类,继承JsonSerializer类
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<String> {
@Override
public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (null == value) {
jsonGenerator.writeString("");
}else {
jsonGenerator.writeString(value);
}
}
}
2、直接在实体类的属性上,加JsonSerialize注解
如:
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方法即可
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99572.html