springboot使用fastjson解析

六眼飞鱼酱① 提交于 2019-12-24 10:33:23

“明年此日青云去,却笑人间举子忙”

刚巧在学习springboot,于是记录起这个知识点,或许以后用得到,也或许可以帮助其他学习者。

使用步骤

  1. 在pom.xml文件中加入fastjson的依赖
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>fastjson</artifactId>
   <version>1.2.47</version>
</dependency>
  1. 启动文件继承WebMvcConfigurationSupport类
@SpringBootApplication
public class DemoApplication extends WebMvcConfigurationSupport {
}
  1. 重写configureMessageConverters方法
/**
     *@author aRunner
     *@date 2019/12/21
     *@description 重写configureMessageConverters
     */
    @Override
    protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        super.configureMessageConverters(converters);
        //定义一个convert转换消息的对象
        FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
        //添加fastjson的配置信息,比如:是否要格式化返回的json数据;
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        //在convert中添加配置信息
        fastJsonHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        //将convert添加到converts当中
        converters.add(fastJsonHttpMessageConverter);
    }
  1. 在实体类中加入测试字段,因为使用框架自带的Jackson返回和使用fastjson返回的数据一直,都是如下图:
    在这里插入图片描述
    所以,为了区分,我们现在使用的是fastjson,加入时间字段,然后使用fastjson格式化时间:
//import com.alibaba.fastjson.annotation.JSONField;
@JSONField(format = "yyyy-MM-dd HH:mm")
private Date time;
  1. 加入时间后的页面打印结果如下:
    在这里插入图片描述
    发现中文乱码了,下面解决乱码的问题。
  2. 解决fastjson解析乱码的问题,在第二步:重写configureMessageConverters方法中加入解决乱码代码,如下:
// 解决乱码的问题
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fastJsonHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
converters.add(fastJsonHttpMessageConverter);

再次访问页面,即可看到中文:
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!