Spring Boot之HttpMessageConverter消息格式

在web应用中,数据到应用是需要转换的,因为请求的数据可能是二进制,可能是字符串,可能是序列化的对象等,输出时也一样可能有多种数据格式,所以可以预见,会有多种数据转换器。事实上也是如此,Spring会维护一个

List<HttpMessageConverter<?>> converters

然后针对每个http请求协议中数据类型来选择合适的Converter来转换数据,输出时情况也类似。这里我们需要探究的具体问题是如何用fastjson替换spring默认的Jackson,springboot版本是2.x,和1.x的是有不一样的,大家注意。

在springboot 2.x中,一个最简单的办法就是定义:

@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
	/**
     * 1.先定义一个convert转换消息的对象
     * 2.添加fastjson的配置信息,比如:是否要格式化返回的json数据
     * 3.在convert中添加配置信息
     * 4.将convert添加到converters当中
     */
    //1.先定义一个convert转换消息的对象
    FastJsonJsonpHttpMessageConverter fastConverter = new FastJsonJsonpHttpMessageConverter();
    //2.添加fastjson的配置信息,比如:是否要格式化返回的json数据
    FastJsonConfig fastJsonConfig = new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    
    //处理中文乱码问题(不然出现中文乱码)
    List<MediaType> fastMediaTypes = new ArrayList<MediaType>();
    fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
    fastConverter.setSupportedMediaTypes(fastMediaTypes);
    
    //3.在convert中添加配置信息
    fastConverter.setFastJsonConfig(fastJsonConfig);
    
    return new HttpMessageConverters(fastConverter);
}

这个时候,你定义的converter会顶在converters列表的最前面,自然在默认Jackson前面,这个时候你定义的fastjson就会生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值