zoukankan      html  css  js  c++  java
  • SpringBoot项目Json中的空值处理,将null转为空字符串"",空list转为空数组等

    本篇使用fastjson进行空值null处理

    Jackson的请看:https://blog.csdn.net/qq_31183727/article/details/99539115

    项目中之前用的null值转空串方法,将空list也转换为了"",不适合需求,之后在网上找的方法修改后,适用现在的需求,现在分享给大家。

    1.  
      import com.alibaba.fastjson.serializer.SerializerFeature;
    2.  
      import com.alibaba.fastjson.support.config.FastJsonConfig;
    3.  
      import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
    4.  
      import org.springframework.context.annotation.Configuration;
    5.  
      import org.springframework.http.converter.HttpMessageConverter;
    6.  
      import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    7.  
       
    8.  
      import java.util.List;
    9.  
       
    10.  
      /**
    11.  
      * 返回结果,null按类型转换为对应的默认值
    12.  
      */
    13.  
      @Configuration
    14.  
      public class ResultConfig extends WebMvcConfigurerAdapter{
    15.  
      @Override
    16.  
      public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    17.  
      FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
    18.  
      FastJsonConfig fastJsonConfig = new FastJsonConfig();
    19.  
      fastJsonConfig.setSerializerFeatures(
    20.  
      //List字段如果为null,输出为[],而非null
    21.  
      SerializerFeature.WriteNullListAsEmpty,
    22.  
      //是否输出值为null的字段,默认为false
    23.  
      SerializerFeature.WriteMapNullValue,
    24.  
      //字符串null返回空字符串
    25.  
      SerializerFeature.WriteNullStringAsEmpty,
    26.  
      //空布尔值返回false
    27.  
      SerializerFeature.WriteNullBooleanAsFalse,
    28.  
      //结果是否格式化,默认为false
    29.  
      SerializerFeature.PrettyFormat);
    30.  
      //格式化日期
    31.  
      fastJsonConfig.setDateFormat("YYYY-MM-dd HH:mm:ss");
    32.  
      converter.setFastJsonConfig(fastJsonConfig);
    33.  
      converters.add(converter);
    34.  
      }
    35.  
      }

    下面是从别的博客找的一些SerializerFeature中的属性及含义


    名称                                                                含义    
    QuoteFieldNames     输出key时是否使用双引号,默认为true     
    UseSingleQuotes     使用单引号而不是双引号,默认为false     
    WriteMapNullValue     是否输出值为null的字段,默认为false     
    WriteEnumUsingToString     Enum输出name()或者original,默认为false     
    UseISO8601DateFormat     Date使用ISO8601格式输出,默认为false     
    WriteNullListAsEmpty     List字段如果为null,输出为[],而非null     
    WriteNullStringAsEmpty     字符类型字段如果为null,输出为”“,而非null     
    WriteNullNumberAsZero     数值字段如果为null,输出为0,而非null     
    WriteNullBooleanAsFalse     Boolean字段如果为null,输出为false,而非null     
    SkipTransientField     如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true     
    SortField     按字段名称排序后输出。默认为false     
    WriteTabAsSpecial     把 做转义输出,默认为false     不推荐
    PrettyFormat     结果是否格式化,默认为false     
    WriteClassName     序列化时写入类型信息,默认为false。反序列化是需用到     
    DisableCircularReferenceDetect     消除对同一对象循环引用的问题,默认为false     
    WriteSlashAsSpecial     对斜杠’/’进行转义     
    BrowserCompatible     将中文都会序列化为uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false     
    WriteDateUseDateFormat     全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);     
    DisableCheckSpecialChar     一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false     
    NotWriteRootClassName     含义     
    BeanToArray     将对象转为array输出     
    WriteNonStringKeyAsString     Map<Integer,Stirng> 输出 key 默认为 Integer添加此属性,Integer 添加了 “”,变成字符型
    NotWriteDefaultValue     将基础类型的默认值屏蔽     
    BrowserSecure     含义     
    IgnoreNonFieldGetter     含义     
    WriteEnumUsingName     用枚举name()输出

  • 相关阅读:
    还在使用golang 的map 做Json编码么?
    Golang 性能测试(2) 性能分析
    golang 性能测试 (1) 基准性能测试
    消息队列 NSQ 源码学习笔记 (五)
    消息队列 NSQ 源码学习笔记 (四)
    消息队列 NSQ 源码学习笔记 (三)
    消息队列 NSQ 源码学习笔记 (二)
    消息队列 NSQ 源码学习笔记 (一)
    你不知道的空格
    Supervisor 使用和进阶4 (Event 的使用)
  • 原文地址:https://www.cnblogs.com/telwanggs/p/15504106.html
Copyright © 2011-2022 走看看