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


    在开发中,当某些字段为null时,在传递给前端后,为null的字段为过滤掉,不会返回给前端,可以由前端处理,也可以由后端处理,后端处理步骤如下

    1、新建类,继承JsonSerializer类

    1. package com.shuizhu.utils;
    2. import com.fasterxml.jackson.core.JsonGenerator;
    3. import com.fasterxml.jackson.databind.JsonSerializer;
    4. import com.fasterxml.jackson.databind.SerializerProvider;
    5. import org.springframework.context.annotation.Configuration;
    6. import java.io.IOException;
    7. /**
    8. * 返回前端时,把null字段修改为“”空字符串
    9. * @author 睡竹
    10. * @date 2022/8/25
    11. */
    12. @Configuration
    13. public class JacksonNotNullAsHorizontalBarSerializer extends JsonSerializer {
    14. @Override
    15. public void serialize(String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
    16. if (null == value) {
    17. jsonGenerator.writeString("");
    18. }else {
    19. jsonGenerator.writeString(value);
    20. }
    21. }
    22. }

    2、直接在实体类的属性上,加JsonSerialize注解

    如:

    1. package com.shuizhu.domain.Demo;
    2. import com.shuizhu.utils.JacksonNotNullAsHorizontalBarSerializer;
    3. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    4. import lombok.Data;
    5. import java.io.Serializable;
    6. import java.math.BigDecimal;
    7. /**
    8. * @author 睡竹
    9. * @date 2022/9/13
    10. */
    11. @Data
    12. public class Demo implements Serializable {
    13. private static final long serialVersionUID = -1L;
    14. private String name;
    15. //nullsUsing 为自定义类,上面那个类
    16. @JsonSerialize(nullsUsing = JacksonNotNullAsHorizontalBarSerializer.class)
    17. private BigDecimal value1;
    18. @JsonSerialize(nullsUsing = JacksonNotNullAsHorizontalBarSerializer.class)
    19. private BigDecimal value2;
    20. }


    然而,错误出现了 !!!!!!!!!!!!!

    被注解标注的字段,在返回给前端后,出现了两次!!!!

    如下:

    {

        "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方法即可

  • 相关阅读:
    apachesolr启动带调试
    English语法_不定代词 - 常用短语
    【计算机网络】Web服务器的配置
    543、RabbitMQ详细入门教程系列 -【Confirm与Mandatory】 2022.09.05
    跑步需要哪些运动装备?跑步装备选购指南
    electron
    游戏动画技术简介
    如何选择期权开户平台,考虑手续费和保证金问题?
    MyBatis 关于查询语句上配置的详细内容
    pdf怎么加密?
  • 原文地址:https://blog.csdn.net/weixin_42675423/article/details/126829709