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
WriteEnumUsingToString Enum输出name()或original false
UseISO8601DateFormat Date使用ISO8601格式输出 false
WriteNullListAsEmpty list字段如果为null,则输出[] false
WriteNullStringAsEmpty 字符串字段如果为null,则输出"" false
WriteNullNumberAsZero 数值字段如果为null,则输出0 false
WriteNullBooleanAsFalse 布尔字段如果为null,则输出false false
SkipTransientField 对象中的属性是transient修饰的,序列化时将会被忽略 true
SortField 按字段名称排序后输出 false
WriteTabAsSpecial 将\t制表符做转义输出(不推荐使用) false
PrettyFormat 输出内容是否格式化 false
WriteClassName 序列化时写入类型信息. 反序列化时会用到 false
DisableCircularReferenceDetect 消除对同一对象循环引用的问题 false
WriteSlashAsSpecial 对/斜杠进行转义 false
BrowserCompatible 将中文汉字都转为\uXXXX格式, 字节数会多一些,但兼容IE6 false
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
3
1
下载
FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.
最近提交(Master分支:17 天前 )
c942c834 - 2 年前
5bc4709b - 2 年前
Logo

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

更多推荐