在使用下面的代码进行返回Demo实体的时候出现中文乱码问题,代码如下:
APP启动类:
@SpringBootApplication @ComponentScan("soringboot.hello") public class APP extends WebMvcConfigurerAdapter{ public static void main(String[] args) { SpringApplication.run(APP.class, args); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.extendMessageConverters(converters); // 定义convert FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); fastJsonHttpMessageConverter.setFastJsonConfig(config); converters.add(fastJsonHttpMessageConverter); } }
Demo类:
public class Demo { private int id; private String name; //com.alibaba.fastjson.annotation.JSONField; @JSONField(format="yyyy-MM-dd HH:mm") private Date createTime; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } }
controller类:
@RestController public class HelloContorller { @RequestMapping("/getDemo1") public Demo getDemo1() { Demo demo = new Demo(); demo.setId(1); demo.setName("优质青年"); demo.setCreateTime(new Date()); return demo; } }
在通过浏览器访问getDemo1的出现下面的现象:
{"createTime":"2018-04-22 13:23","id":1,"name":"浼樿川闈掑勾"}
即:优质青年 变成了 浼樿川闈掑勾
解决问题最重要,下面直接附上代码:
@SpringBootApplication @ComponentScan("soringboot.hello") public class APP extends WebMvcConfigurerAdapter{ public static void main(String[] args) { SpringApplication.run(APP.class, args); } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.extendMessageConverters(converters); // 定义convert FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); // 处理中文的乱码问题 // 创建MediaType的集合 List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); // 设置编码格式为UTF8 supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); // 将supportedMediaTypes对象赋值给fastJsonHttpMessageConverter的SupportedMediaTypes属性 fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes ); fastJsonHttpMessageConverter.setFastJsonConfig(config); converters.add(fastJsonHttpMessageConverter); } }
再次访问原路径,效果如下:
{
"createTime":"2018-04-22 13:28",
"id":1,
"name":"优质青年"
}
这样就解决了问题。当然了如果是通过@Bean的方式实现的fastjson转换的方式,处理方式也是一样的,如:
@SpringBootApplication @ComponentScan("soringboot.hello") public class APP extends WebMvcConfigurerAdapter{ public static void main(String[] args) { SpringApplication.run(APP.class, args); } /*@Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { super.extendMessageConverters(converters); // 定义convert FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); // 处理中文的乱码问题 // 创建MediaType的集合 List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); // 设置编码格式为UTF8 supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); // 将supportedMediaTypes对象赋值给fastJsonHttpMessageConverter的SupportedMediaTypes属性 fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes ); fastJsonHttpMessageConverter.setFastJsonConfig(config); converters.add(fastJsonHttpMessageConverter); }*/ @Bean public HttpMessageConverters fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures(SerializerFeature.PrettyFormat); // 处理中文的乱码问题 // 创建MediaType的集合 List<MediaType> supportedMediaTypes = new ArrayList<MediaType>(); // 设置编码格式为UTF8 supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); // 将supportedMediaTypes对象赋值给fastJsonHttpMessageConverter的SupportedMediaTypes属性 fastJsonHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes ); fastJsonHttpMessageConverter.setFastJsonConfig(config); return new HttpMessageConverters(fastJsonHttpMessageConverter); } }