fastjson出现中文乱码问题解决方法

    科技2022-08-13  113

    Springboot-Fastjson测试

    1,在pom.xml文件中添加依赖

    在web下添加扩展json

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </exclusion> </exclusions> </dependency>

    添加fastjson依赖

    <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>

    2,Application.class 继承WebMvcConfigurer,并重写configerMessageConverter方法(要注意fastjson出现中文乱码问题,在重写方法中将格式设置为utf-8即可)

    @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { //1、定义一个convert转换消息的对象 FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); //2、添加fastjson的配置信息 FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //防止中文乱码问题 List<MediaType> supportedMediaTypes=new ArrayList<MediaType>(); supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); fastConverter.setSupportedMediaTypes(supportedMediaTypes); //3、在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); //4、将convert添加到converters中 converters.add(fastConverter); }

    3,创建fastjson Model类(省略部分get,set方法)

    public class FastjsonTest { private Integer id; private String string; /** * 格式化日期 */ @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date date; /** * 转换为json时不包括该属性 */ @JSONField(serialize = false) private String ignore; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }

    4,测试controller

    @RestController public class TestController { @GetMapping("/fastjson") public FastjsonTest getFastJson() { FastjsonTest fastjsonTest = new FastjsonTest(); fastjsonTest.setId(1); fastjsonTest.setString("fastjson 测试"); fastjsonTest.setIgnore("ignore field"); fastjsonTest.setDate(new Date()); return fastjsonTest; } }

    测试结果:

    Processed: 0.017, SQL: 8