SpringBoot入门:SpringBoot使用FastJson解析JSON数据

引入fastjson依赖库 :

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>

官方文档说的1.2.10以后,会有两个方法支持HttpMessageconvert,一个是FastJsonHttpMessageConverter,支持4.2以下的版本,一个是FastJsonHttpMessageConverter4支持4.2以上的版本,具体有什么区别暂时没有深入研究。这里也就是说:低版本的就不支持了,所以这里最低要求就是1.2.10+。

配置fastjon(支持两种方法) :

第一种方法:
(1)启动类继承WebMvcConfigurerAdapter
(2)覆盖方法configureMessageConverters

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@SpringBootApplication
public class App extends WebMvcConfigurerAdapter {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
//1、需要先定义一个 convert 转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.PrettyFormat
);
//3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}

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

第二种方法:
(1)在App.java启动类中, 注入Bean : HttpMessageConverters
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@SpringBootApplication
public class App {

@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
// 1、需要先定义一个 convert 转换消息的对象;
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
//2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
//3、在convert中添加配置信息.
fastConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fastConverter;
return new HttpMessageConverters(converter);
}

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

新建User.java, 使用fastjson格式化日期。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public class User {

private Integer id;

private String name;

private Integer age;

@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;

public Integer getId() {
return id;
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Date getCreateTime() {
return createTime;
}

public void setCreateTime(Date createTime) {
this.createTime = createTime;
}

}

新建UserController类:

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
public class UserController {

@GetMapping("getUser")
public User getUser() {
User user = new User() ;
user.setId(1);
user.setName("jason");
user.setAge(24);
user.setCreateTime(new Date());
return user ;
}
}

启动App.java

访问 http://127.0.0.1:8080/getUser ,结果如下:

1
2
3
4
5
6
{
"age": 24,
"createTime": "2017-08-24 21:55:05",
"id": 1,
"name": "jason"
}

SpringBoot入门:SpringBoot使用FastJson解析JSON数据
https://river106.cn/posts/2e761813.html
作者
river106
发布于
2018年9月16日
许可协议