解决springboot序列化 json数据到前端中文乱码问题

前言

关于springboot乱码的问题,之前有文章已经介绍过了,这一篇算是作为补充,重点解决对象在序列化过程中出现的中文乱码的问题,以及后台报500的错误。

问题描述

  • spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson

  • spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json数据报错:no convertter for return value of type

  • 注释掉解决中文乱码的问题之后返回对象json正常

解决中文乱码的配置

@Configuration
@EnableWebMvc
@ComponentScan
public
 
class
 
MvcConfiguration
 
extends
 
WebMvcConfigurerAdapter
 
{
    
@Bean
    
public
 
HttpMessageConverter
<
String
>
 responseBodyConverter
(){
        
StringHttpMessageConverter
 converter 
=
 
new
 
StringHttpMessageConverter
(
Charset
.
forName
(
"UTF-8"
));
        
return
 converter
;
    
}
    
@Override
    
public
 
void
 configureMessageConverters
(
List
<
HttpMessageConverter
<?>>
 converters
)
 
{
        
super
.
configureMessageConverters
(
converters
);
        
//解决中文乱码
        converters
.
add
(
responseBodyConverter
());
        
//解决 添加解决中文乱码后 上述配置之后,返回json数据直接报错 500:no convertter for return value of type
        converters
.
add
(
messageConverter
());
    
}
}

除了上述配置之后还有添加MappingJackson2HttpMessageConverter

 
@Bean
    
public
 
MappingJackson2HttpMessageConverter
 messageConverter
()
 
{
        
MappingJackson2HttpMessageConverter
 converter 
=
 
new
 
MappingJackson2HttpMessageConverter
();
        converter
.
setObjectMapper
(
getObjectMapper
());
        
return
 converter
;
    
}

注意:responseBodyConverter和MappingJackson2HttpMessageConverter如果分开配置要确保前者不被覆盖,不然就会出现返回springboot返回json正常,但是返回中文乱码,或者返回中文不乱吗,但是返回对象或者json异常。

解决springboot范湖中文乱码和返回json 500错误的完整代码

/**
 * spring boot 解决后台返回 json 到前台出现中文乱码的问题
 */
@Configuration
@EnableWebMvc
@ComponentScan
public
 
class
 
MvcConfiguration
 
extends
 
WebMvcConfigurerAdapter
 
{
    
@Bean
    
public
 
HttpMessageConverter
<
String
>
 responseBodyConverter
(){
        
StringHttpMessageConverter
 converter 
=
 
new
 
StringHttpMessageConverter
(
Charset
.
forName
(
"UTF-8"
));
        
return
 converter
;
    
}
    
@Bean
    
public
 
ObjectMapper
 getObjectMapper
()
 
{
        
return
 
new
 
ObjectMapper
();
    
}
    
@Bean
    
public
 
MappingJackson2HttpMessageConverter
 messageConverter
()
 
{
        
MappingJackson2HttpMessageConverter
 converter 
=
 
new
 
MappingJackson2HttpMessageConverter
();
        converter
.
setObjectMapper
(
getObjectMapper
());
        
return
 converter
;
    
}
    
@Override
    
public
 
void
 configureMessageConverters
(
List
<
HttpMessageConverter
<?>>
 converters
)
 
{
        
super
.
configureMessageConverters
(
converters
);
        
//解决中文乱码
        converters
.
add
(
responseBodyConverter
());
        
//解决 添加解决中文乱码后 上述配置之后,返回json数据直接报错 500:no convertter for return value of type
        converters
.
add
(
messageConverter
());
    
}
}


posted @   edda_huang  阅读(3744)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示

目录导航