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

前言

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

问题描述

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

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

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

解决中文乱码的配置

  1. @Configuration

  2. @EnableWebMvc

  3. @ComponentScan

  4. public class MvcConfiguration extends WebMvcConfigurerAdapter {

  5.    @Bean

  6.    public HttpMessageConverter<String> responseBodyConverter(){

  7.        StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));

  8.        return converter;

  9.    }

  10.    @Override

  11.    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

  12.        super.configureMessageConverters(converters);

  13.        //解决中文乱码

  14.        converters.add(responseBodyConverter());

  15.        //解决 添加解决中文乱码后 上述配置之后,返回json数据直接报错 500:no convertter for return value of type

  16.        converters.add(messageConverter());

  17.    }

  18. }

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

  1. @Bean

  2.    public MappingJackson2HttpMessageConverter messageConverter() {

  3.        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

  4.        converter.setObjectMapper(getObjectMapper());

  5.        return converter;

  6.    }

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

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

  1. /**

  2. * spring boot 解决后台返回 json 到前台出现中文乱码的问题

  3. */

  4. @Configuration

  5. @EnableWebMvc

  6. @ComponentScan

  7. public class MvcConfiguration extends WebMvcConfigurerAdapter {

  8.    @Bean

  9.    public HttpMessageConverter<String> responseBodyConverter(){

  10.        StringHttpMessageConverter converter = new StringHttpMessageConverter(Charset.forName("UTF-8"));

  11.        return converter;

  12.    }

  13.    @Bean

  14.    public ObjectMapper getObjectMapper() {

  15.        return new ObjectMapper();

  16.    }

  17.    @Bean

  18.    public MappingJackson2HttpMessageConverter messageConverter() {

  19.        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();

  20.        converter.setObjectMapper(getObjectMapper());

  21.        return converter;

  22.    }

  23.    @Override

  24.    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {

  25.        super.configureMessageConverters(converters);

  26.        //解决中文乱码

  27.        converters.add(responseBodyConverter());

  28.        //解决 添加解决中文乱码后 上述配置之后,返回json数据直接报错 500:no convertter for return value of type

  29.        converters.add(messageConverter());

  30.    }

  31. }


posted @ 2020-11-24 10:26  edda_huang  阅读(3668)  评论(0编辑  收藏  举报