记一次冲突:JsonSerialize注解标注的字段返回两次的错误

导读:本篇文章讲解 记一次冲突:JsonSerialize注解标注的字段返回两次的错误,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

在开发中,当某些字段为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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!