fastjson将对象转为json字符串给前端的时候, 如果字段的值为null, 则该字段默认被fastJson过滤直接不展示. 而在实际项目中我们往往也是需要展示这个字段的 , 解决即增加一个fastJson序列化配置 , 设置序列化格式.

package com.xbz.mvc.config;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;

import java.util.ArrayList;
import java.util.List;

/**
 * @title fastjson前端响应处理
 * @description 需要正常返回null值的字段
 * @author Xingbz
 * @createDate 2019-10-15
 */
@Configuration
public class FastJsonMvcConfig {

    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        //1.定义一个convert消息转换对象
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        //2.添加fastJson的序列化配置信息
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,
                SerializerFeature.DisableCircularReferenceDetect, SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullListAsEmpty);
        //3.处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        //4.在convert中添加配置信息
        fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        return new HttpMessageConverters(fastJsonHttpMessageConverter);

    }
}

fastJson序列化格式(SerializerFeature属性)配置如下 : 

名称说明缺省值
QuoteFieldNames输出key时是否使用双引号true
UseSingleQuotes使用单引号而非双引号false
WriteMapNullValue是否输入值为null的key字段false
WriteEnumUsingToStringEnum输出name()或originalfalse
UseISO8601DateFormatDate使用ISO8601格式输出false
WriteNullListAsEmptylist字段如果为null,则输出[]false
WriteNullStringAsEmpty字符串字段如果为null,则输出""false
WriteNullNumberAsZero数值字段如果为null,则输出0false
WriteNullBooleanAsFalse布尔字段如果为null,则输出falsefalse
SkipTransientField对象中的属性是transient修饰的,序列化时将会被忽略true
SortField按字段名称排序后输出false
WriteTabAsSpecial将\t制表符做转义输出(不推荐使用)false
PrettyFormat输出内容是否格式化false
WriteClassName序列化时写入类型信息. 反序列化时会用到false
DisableCircularReferenceDetect消除对同一对象循环引用的问题false
WriteSlashAsSpecial对/斜杠进行转义false
BrowserCompatible将中文汉字都转为\uXXXX格式, 字节数会多一些,但兼容IE6false
WriteDateUseDateFormat全局日期格式修改. JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);false
DisableCheckSpecialChar字符串value中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符false
NotWriteRootClassName  
BeanToArray将对象转为数组输出false
WriteNonStringKeyAsString  
NotWriteDefaultValue  
BrowserSecure  
IgnoreNonFieldGetter忽略没有get方法的字段false
WriteEnumUsingName  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

更多更详细说明可参见此博文  https://blog.csdn.net/u010246789/article/details/52539576

GitHub 加速计划 / fastj / fastjson
25.69 K
6.51 K
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:3 个月前 )
c942c834 - 1 年前
5bc4709b - 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐