史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据

一、准备

开发环境:1.7.0_79
开发工具:Eclipse
项目管理工具:Maven3
操作系统:Windows8

Spring boot版本:1.4.1.RELEASE

二、案例

跟前面工程一样,搭建一个Maven工程SpringBootFastJson

史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据_第1张图片

POM文件中导入相关依赖


	4.0.0
	com.queen.springboot
	SpringBootFastJson
	0.0.1-SNAPSHOT
	
		org.springframework.boot
		spring-boot-starter-parent
		1.4.1.RELEASE
	
	
		UTF-8
		1.7
	
	
		
			org.springframework.boot
			spring-boot-starter-web
		
		
			com.alibaba
			fastjson
			1.2.15
		
	

这里我们添加了alibaba提供的json依赖包fastjson

实体类User

public class User {
 private int id;
 private String loginId;
 private String userName;
 private String email;
 @JSONField(format="yyyy-MM-dd HH:mm")
 private Date createDate;

 public int getId() {
      return id;
 }

 public void setId(int id) {
      this.id = id;
 }

 public String getLoginId() {
      return loginId;
 }

 public void setLoginId(String loginId) {
      this.loginId = loginId;
 }

 public String getUserName() {
      return userName;
 }

 public void setUserName(String userName) {
      this.userName = userName;
 }

 public String getEmail() {
      return email;
 }

 public void setEmail(String email) {
      this.email = email;
 }

 public Date getCreateDate() {
      return createDate;
 }

 public void setCreateDate(Date createDate) {
      this.createDate = createDate;
 }

}

控制类SpringBootFastJsonController

@RestController
public class SpringBootFastJsonController {

	@RequestMapping(value="/getUser", produces = "application/json; charset=utf-8")
	public User getUser() {
		User user = new User();
		user.setId(1);
		user.setLoginId("queen");
		user.setUserName("奎恩");
		user.setEmail("[email protected]");
		return user;
	}
}
前面的代码跟我们配置默认Spring boot返回json时候代码是一样的。下面我们开始编写启动类APP,目前配置fastjson有两种方法
  • 第一种:①启动类继承WebMvcConfigurerAdapter ②覆盖方法ConfigureMessageConverters
  • 第二种:在APP启动类中,注入Bean HttpMessageConverters

我们先介绍第一种:

编写APP

@SpringBootApplication
public class APP extends WebMvcConfigurerAdapter {

	@Override
	public void configureMessageConverters(
			List> converters) {
		//定义一个converter转换消息的对象
		FastJsonHttpMessageConverter fastconverter = new FastJsonHttpMessageConverter();
		//添加fastjson的配置信息,比如:是否需要格式化返回的json数据
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		//在converter中添加配置信息
		fastconverter.setFastJsonConfig(fastJsonConfig);
		//将converter添加到converters中
		converters.add(fastconverter);
	}

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

}

右键Run As -> Java Application,启动应用,使用http://localhost:8080/getUser看是否能够访问应用


但是我们发现了一个问题,就是返回的userName是乱码的。那我们要怎么解决这个问题呢?其实很简单只需要在APP类中的configureMessageConverters方法中加入三段代码就可以搞定(这是网上大部分的做法,但是笔者加入了之后并没有生效),后来笔者在getUser方法上添加了RequestMapping中添加了produces = “application/json; charset=utf-8″才生效,需要读者自己多尝试一下。修改之后的代码如下:

@Override
public void configureMessageConverters(
	List> converters) {
	//定义一个converter转换消息的对象
	FastJsonHttpMessageConverter fastconverter = new FastJsonHttpMessageConverter();
	//添加fastjson的配置信息,比如:是否需要格式化返回的json数据
	FastJsonConfig fastJsonConfig = new FastJsonConfig();
	fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
	//处理中文乱码问题
        List fastMediaTypes = new ArrayList<>();
        fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        fastconverter.setSupportedMediaTypes(fastMediaTypes);
	//在converter中添加配置信息
	fastconverter.setFastJsonConfig(fastJsonConfig);
	//将converter添加到converters中
	converters.add(fastconverter);
}

重新启动服务访问,恢复正常

史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据_第2张图片

这是我们介绍的第一种方式

那接下来我们来看第二种方式,第二种方式是以代码方式实现,具体写法与第一种大同小异。

新建一个启动类FastJsonApp

@SpringBootApplication
public class FastJsonAPP {

	@Bean
	public HttpMessageConverters fastJsonHttpMessageConverters() {
		FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
		FastJsonConfig fastJsonConfig = new FastJsonConfig();
		fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
		fastConverter.setFastJsonConfig(fastJsonConfig);
		HttpMessageConverter converter = fastConverter;
		return new HttpMessageConverters(converter);
	}

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

}

右键Run As -> Java Application,启动应用,使用http://localhost:8080/getUser看是否能够访问应用

史上最简单的SpringBoot教程之如何使用FastJson解析JSON数据_第3张图片

同样访问成功,但是这种方式没有出现乱码。所以推荐用HttpMessageConverters这种配置的模式去加载。至此,我们关于如何使用FastJson解析JSON数据介绍完毕。


=======欢迎大家拍砖,小手一抖,多多点赞哟!=======

版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。


你可能感兴趣的:(SpringBoot教程,SpringBoot)