配置使用FastJson
2019-01-08 本文已影响0人
李姗姗_8ef1
FastJson是阿里巴巴旗下的一个开源项目之一,专门用来做快速操作Json的序列化与反序列化的组件。
1. 添加依赖
新建项目的过程可以参考使用JPA实现MySQL数据库基本CRUD操作
访问仓库地址:https://mvnrepository.com/artifact/com.alibaba/fastjson
选择最新的版本,注意一定要选最新的版本,否则会出现有些类不支持的情况(我在写代码时,遇到了Cannot resolve symbol ‘...’这种提示,换成新版本的依赖就没问题了,此处着重记录),当然新版本也会淘汰一些,仿照网上写代码遇到问题时可以考虑是否被新版本淘汰了。
我当时的最新版本为1.2.54
2.配置FastJson
创建FastJsonConfiguration文件,代码如下
package com.example;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import java.util.List;
/**
* Created by conan on 2019/1/7.
*/
@Configuration
public class FastJsonConfiguration extends WebMvcConfigurationSupport {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
{
//调用父类配置
super.configureMessageConverters(converters);
//创建消息转换器
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//创建配置类
FastJsonConfig fastJsonConfig = new FastJsonConfig();
//返回内容的过滤
fastJsonConfig.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteMapNullValue
);
fastConverter.setFastJsonConfig(fastJsonConfig);
//将fastjson添加到视图消息转换器列表内
converters.add(fastConverter);
}
}
FastJson SerializerFeatures配置:
WriteMapNullValue:是否输出值为null的字段;
WriteNullListAsEmpty:List字段如果为null,输出为[],而非null;
WriteNullStringAsEmpty: 字符类型字段如果为null,输出为"",而非null;
DisableCircularReferenceDetect:消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环);
WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null。
3.配置效果
数据库新建一行GroupName值为null的数据
启动本程序访问地址:http://127.0.0.1:8080/user/list
网页看到的结果为 更改FastJson配置
fastJsonConfig.setSerializerFeatures(
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty
);
重新启动程序,刷新网页,结果变为
FastJson配置生效。