SpringBoot之二:使用Fastjson的两种方式(解决中文乱码)

一、SoringBoot启动类继承WebMvcConfigurerAdapte

    *本质就是使用FastJson替换Spring Boot默认的Json。

@SpringBootApplication
public class AppExtendJson extends WebMvcConfigurerAdapter{

    /**
     * 1、继承WebMvcConfigurerAdapter类
     * 2、重写configureMessageConverters方法
     * WebMvcConfigurerAdapter:用于将fastjson替换原有的jackson
     * 目的是声明这个SpringBoot的应用使用fastjson框架解析Json格式数据
     */
    @Override
    public void configureMessageConverters(List> converters) {
        super.configureMessageConverters(converters);

        // 1、需要先定义一个转换消息的对象:FastJsonHttpMessageConverter
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3、在convert中添加配置信息.
        fastConverter.setFastJsonConfig(fastJsonConfig);

        //4、将convert添加到converters当中.
        converters.add(fastConverter);
    }



    public static void main(String[] args) {
        SpringApplication.run(AppExtendJson.class, args);
    }

}

二、注入HttpMessageConverters类

@SpringBootApplication
public class AppInjectJson {


    /**
     * 在这里我们使用 @Bean注入 fastJsonHttpMessageConvert
     * @return
     */
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        // 1、需要先定义一个 convert 转换消息的对象;
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //2、创建Fastjosn对象并设定序列化规则
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3、规则赋予转换对象
        fastConverter.setFastJsonConfig(fastJsonConfig);

        return new HttpMessageConverters(fastConverter);
    }


    public static void main(String[] args) {
        SpringApplication.run(AppInjectJson.class, args);
    }

}

三、编写Controller类并解决中文乱码

/**
 * @RestController=@Controller + @RequestBody
 * @author yang
 */
@RestController
public class HelloController {

    /**
     * 1、在这里我们使用@RequestMapping 建立请求映射:
     * @return
     */
    @RequestMapping("hello")
    public String hello() {
        return "say hello ......";
    }


    /**
     * 2、Spring Boot默认使用的json解析框架是jackson
     *  解决中文乱码问题:  produces="application/json;charset=UTF-8"
     * @return
     */
    @RequestMapping(value="getUser",produces="application/json;charset=UTF-8")
    public User getUser() {
        User user=new User();
        user.setId(1);
        user.setName("胖子呀");
        user.setTelePhoneNumber("25874139");
        user.setCreateDate(new Date());
        user.setRemark("这是一个信息备注。");
        return user;
    }
}

四、FastJson的Maven包

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>fastjsonartifactId>
    <version>1.2.15version>
dependency>

SpringBoot之二:使用Fastjson的两种方式(解决中文乱码)_第1张图片

你可能感兴趣的:(SpringBoot)