开发环境:1.7.0_79
开发工具:Eclipse
项目管理工具:Maven3
操作系统:Windows8
Spring boot版本:1.4.1.RELEASE
跟前面工程一样,搭建一个Maven工程SpringBootFastJson
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有两种方法
我们先介绍第一种:
编写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);
}
重新启动服务访问,恢复正常
这是我们介绍的第一种方式
那接下来我们来看第二种方式,第二种方式是以代码方式实现,具体写法与第一种大同小异。
新建一个启动类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看是否能够访问应用
同样访问成功,但是这种方式没有出现乱码。所以推荐用HttpMessageConverters这种配置的模式去加载。至此,我们关于如何使用FastJson解析JSON数据介绍完毕。
=======欢迎大家拍砖,小手一抖,多多点赞哟!=======
版权声明:本文为博主原创文章,允许转载,但转载必须标明出处。