springboot(四).配置FastJson自定义消息转化器

配置FastJson自定义消息转化器

一.fastJson简介

fastJson是阿里巴巴旗下的一个开源项目之一,顾名思义它专门用来做快速操作Json的序列化与反序列化的组件。它是目前json解析最快的开源组件没有之一!在这之前jaskJson是命名为快速操作json的工具,而当阿里巴巴的fastJson诞生后jaskjson就消声匿迹了,不过目前很多项目还在使用。

今天,我们使用fastJson来配置消息转换器,过滤并修改返回的消息

二.依赖导入

<!--fastjson依赖添加-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.31</version>
        </dependency>

三.配置类编写

新建FastJsonConfiguration配置信息类,添加@Configuration注解让SpringBoot自动加载类内的配置,有一点要注意我们继承了WebMvcConfigurerAdapter这个类,这个类是SpringBoot内部提供专门处理用户自行添加的配置,里面不仅仅包含了修改视图的过滤还有其他很多的方法,还包括拦截器,过滤器等配置

/**
 * WebMvcConfigurerAdapter类是SpringBoot内部提供专门处理用户自行添加的配置,
 * 里面不仅仅包含了修改视图的过滤还有其他很多的方法,还包括拦截器,过滤器,Cors配置等。
 * Created by hengyang4 on 2018/7/9.
 */
@Configuration
public class FastJsonConfiguration extends WebMvcConfigurerAdapter{

    /**
     * 修改自定义消息转化器
     * @param converters 消息转换器列表
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters){
        //调用父类的配置
        super.configureMessageConverters(converters);
        //创建fastJson消息转换器
        FastJsonHttpMessageConverter fastJsonConverter = new FastJsonHttpMessageConverter();
        //创建配置类
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        //过滤并修改配置返回内容
        fastJsonConfig.setSerializerFeatures(
                //List字段如果为null,输出为[],而非null
                //SerializerFeature.WriteNullListAsEmpty,
                //字符类型字段如果为null,输出为"",而非null
                SerializerFeature.WriteNullStringAsEmpty,
                //Boolean字段如果为null,输出为falseJ,而非null
                //SerializerFeature.WriteNullBooleanAsFalse,
                //消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环)
                SerializerFeature.DisableCircularReferenceDetect,
                //是否输出值为null的字段,默认为false。
                SerializerFeature.WriteMapNullValue
        );
        //处理中文乱码问题
        List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastJsonConverter.setSupportedMediaTypes(fastMediaTypes);
        fastJsonConverter.setFastJsonConfig(fastJsonConfig);
        //将fastjson添加到视图消息转换器列表内
        converters.add(fastJsonConverter);
    }
}

下面我们来介绍下常用的SerializerFeatures配置。

FastJson SerializerFeatures

WriteNullListAsEmpty  :List字段如果为null,输出为[],而非null
WriteNullStringAsEmpty : 字符类型字段如果为null,输出为"",而非null
DisableCircularReferenceDetect :消除对同一对象循环引用的问题,默认为false(如果不配置有可能会进入死循环)
WriteNullBooleanAsFalse:Boolean字段如果为null,输出为false,而非null
WriteMapNullValue:是否输出值为null的字段,默认为false。

四.结果验证

我们这里使用了WriteNullStringAsEmpty,当返回信息里有null值时会自动转为"",我们来一起验证一下

 

表中数据第一条信息的name为null,我们来查询一下第一条用户信息

返回的name转为了空字符串"",这样,我们的fastJson消息转化器就配置成功了!

原文地址:https://www.cnblogs.com/GodHeng/p/9285073.html

时间: 2024-11-12 22:52:01

springboot(四).配置FastJson自定义消息转化器的相关文章

易宝典文章——玩转Office 365中的Exchange Online服务 之二十四 配置垃圾邮件筛选器反垃圾邮件

如果希望实现基于发件人邮件地址,或者需要拒绝某个域的邮件,可以通过Exchange Online提供的垃圾邮件筛选器策略来解决.垃圾邮件筛选器策略除了能够实现上述的黑名单筛选外,还支持白名单筛选,基于国别来进行筛选,比如阻止某岛国语言的邮件,从某小人国发来的邮件等.此外,垃圾邮件筛选器策略还定义做针对不同级别的垃圾邮件如何进行处理,是标注,还是放入垃圾箱,或者是进行隔离等.一.了解默认的垃圾邮件筛选器策略在EAC中,导航到"保护",定位到"垃圾邮件筛选器"选项卡,选

flask之web网关、三件套、配置、路由(参数、转化器及自定义转化器)、cbv、模板语言、session

1.wsgiref.py from wsgiref.simple_server import make_server def mya(environ, start_response): print(environ) print(start_response) start_response('200 OK', [('Content-Type', 'text/html')]) if environ.get('PATH_INFO') == '/index': with open(r'index.htm

springboot环境下配置过滤器和拦截器

以前我们在配置过滤器和拦截器的时候,都是一个类继承一个接口,然后在xml中配置一下就ok 但是,但是,这是springboot的环境,没有xml的配置.所以我们还要继续学习啊啊啊啊啊~~~~~ 先简单大致说明一下,过滤器我们可以直接在类上加上@Component注解实现,但是有些参数啥的还是不好配置,还是需要一个配置文件来搞,所以,spring给我们提供了一个注解,就相当于xml,然后每个方法返回一个对象用@Bean来标注,相当于<bean></bean>注解   看代码吧 Tim

SpringBoot(四) -- SpringBoot与Web开发

一.发开前准备 1.创建一个SpringBoot应用,引入我们需要的模块 2.SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置,就能运行起来 3.编写业务代码 二.静态资源映射规则 在WebMvcAutoConfiguration中有着如下的配置: 1 @Override 2 public void addResourceHandlers(ResourceHandlerRegistry registry) { 3 if (!this.resourceProperti

助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoo

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接如何分析SpringBoot源码模块及结构?--SpringBoot源码(二) 上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一--自动配置的神秘面纱了.因为SpringBoot自动配置原理是基于其大量的条件注解ConditionalOnXXX,因此,本节我们先来撸下Spring的条件注解的相关源码. 2 SpringBoot的派生条件

Struts1.x自定义转化器

自定义时间转化器 1,建立一个MyTypeConvertor 类继承Converter(Converter类下有各种类型转化的类) package com.platform_easyuiSSH.struts1.util; import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; import org.apache.commons.beanutils.Converter; pub

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了.全部自动实现. 话不多说,直接上代码: 第一步pom文件配置添加jar: <!-- mybatis的分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>

补习系列(10)-springboot 之配置读取

目录 简介 一.配置样例 二.如何注入配置 1. 缺省配置文件 2. 使用注解 3. 启动参数 还有.. 三.如何读取配置 @Value 注解 Environment 接口 @ConfigurationProperties 注解 四.不同环境中的配置 1. 区别开发.测试.发布环境 2. 声明多配置文件 参考文档 简介 在早前的博客中曾经写过 Spring 程序通过 Bean 映射实现配置信息的读取. 在SpringBoot 框架中读取配置的方式变得非常多样,这导致读者在搜寻资料时反而容易迷糊.

SpringBoot自动配置原理

SpringBoot自动配置主要通过@EnableAutoConfiguration, @Conditional, @EnableConfigurationProperties或者@ConfigurationProperties 等几个注解来进行自动配置完成的. @EnableAutoConfiguration开启自动配置,主要作用就是调用Spring-Core包里的loadFactoryNames(),将autoconfig 包里的已经写好的自动配置加载进来. @Conditional条件注解