SpringBoot配置FastJson中存在的乱码问题

Stella981
• 阅读 509

SpringBoot配置FastJson中存在的乱码问题

之前没有使用过SpringBoot,现在这个项目中有使用,刚好项目赶的差不多了,今天就想好好学学,解决遇到各种BUG的不断挑战。

今天说一下SpringBoot配置FastJson,虽然说这个配置起来很简单,百度一下基本就可以搞定,但是你测了之后就会有许多的小问题,今天就被我遇到了,那么今天就彻底给大家把这些存在的小问题解决掉。

1、先创建一个简单的SpringBoot项目,这里相信大家应该是可以做到了,我就不多说了,我把之前创建项目的地址放在下面,不会的朋友可以参考下;

一、如何快速搭建你的第一个SpringBoot项目应用

2、创建了SpringBoot项目之后,那么接下来就是整合FastJson了。

SpringBoot配置FastJson中存在的乱码问题

我们可以看到,在SpringBoot中,已经给我们默认配置了Jackson。

3、SpringBoot整个FastJson的方式其实有两种

第一种:

①、启动类继承WebMvcConfigurerAdapter;

②、重写configureMessageConverters方法即可;

第二种:

启动类注入HttpMessageConverters

这里我们只说实用的,第一种方式我们就不说了,其实跟第二种方式大同小异,我们来看看如何使用HttpMessageConverters来进行配置。首先我们要导入FastJson的maven坐标,加载相关的jar文件,而且这里的版本必须是1.2.0以上的,不然可能会出一些小问题。

接下来就是最主要的代码了

@Bean    public HttpMessageConverters fastJsonHttpMessageConverters(){        // 先定义一个convert 转换消息的对象        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();        // 添加fastJson的配置信息,这里我们配置格式化为json数据        FastJsonConfig fastJsonConfig = new FastJsonConfig();        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);        // 在convert中添加配置信息        fastConverter.setFastJsonConfig(fastJsonConfig);        // 将convert添加到converters当中        HttpMessageConverter<?> converter = fastConverter;        return new HttpMessageConverters(converter);    }

感觉很完美,似乎没有任何的问题,那么我们来启动一下,看一下是否能得到我们想要的结果。下面是我们写的Controller类,返回一个对象,里面有个Date类型的属性,我们在实体类中指定Date的返回格式,如果能得到指定的格式,那么FastJson就配置成功了。

Controller层代码

@RestControllerpublic class LoginController {    @RequestMapping("hello")    public String hello() {        return "hello2";    }    @GetMapping(value = "login")    public User login() {        User user = new User();        user.setUsernamg("admin");        user.setPassword("1234");        user.setCreateTime(new Date());        return user;    }}

实体类User层代码

@Datapublic class User implements Serializable {    private String usernamg;    private String password;    // 指定date的返回格式    @JSONField(format = "yyyy-MM-dd HH:mm")    private Date createTime;}

我们来看下运行结果

SpringBoot配置FastJson中存在的乱码问题

我们确实拿到了我们想要的结果,是不是感觉很圆满,但是结果往往会让你觉得很伤感,就当我把返回的格式改为年月日的时候,问题出来了,大家看下出现了什么问题。

SpringBoot配置FastJson中存在的乱码问题

乱码,是不是心情很烦躁,今天搞了一天试了好多方法我确实也很烦躁,但是总算是找到解决的方法了。

大家在看下原来的这些代码,我们在这里去进行中文乱码的处理

@Bean    public HttpMessageConverters fastJsonHttpMessageConverters(){        // 先定义一个convert 转换消息的对象        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();        // 添加fastJson的配置信息,这里我们配置格式化为json数据        FastJsonConfig fastJsonConfig = new FastJsonConfig();        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);        // 在convert中添加配置信息        fastConverter.setFastJsonConfig(fastJsonConfig);        // 处理中文乱码问题        List<MediaType> fastMediaTypes = new ArrayList<>();        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);        fastConverter.setSupportedMediaTypes(fastMediaTypes);        // 将convert添加到converters当中        HttpMessageConverter<?> converter = fastConverter;        return new HttpMessageConverters(converter);    }

我们再来运行看看效果

SpringBoot配置FastJson中存在的乱码问题

那么这个时候大家就可以发现,乱码问题已经全部解决掉了,把今天遇到的问题分享给大家,大家学习一下,下次如果遇到这种问题,你就可以轻松的解决掉了。

更多精彩内容请关注”一个程序员的成长

SpringBoot配置FastJson中存在的乱码问题

本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Easter79 Easter79
3年前
SpringBoot配置FastJson中存在的乱码问题
!(https://oscimg.oschina.net/oscnet/0c62f3ca8b9e51c93347ac93fce6ee5a842.gif)之前没有使用过SpringBoot,现在这个项目中有使用,刚好项目赶的差不多了,今天就想好好学学,解决遇到各种BUG的不断挑战。今天说一下SpringBoot配置FastJson,虽然说这个配置起
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Stella981 Stella981
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这