三种常用的JSON转换
一、JSON的概述
我们做项目,通常会使用前后端分离的ajax交互,那么前后端交互的数据格式通常是json格式。这里既有牵扯到json和对象集合之间的转换,目前市面上的json转换主要有三种:
- Jackson转换
- FastJson转换
- Gson转换
下面将会对这三种转换进行简单的入门演示:
二、准备工作
1、新建一个maven工程
工程名任意,打包方式选择jar
2、在pom.xml导入下面依赖
[XML] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
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
|
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> |
3、创建用于演示的类
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
public class Student implements Serializable { private String sid; private String name; private Integer age; private String address; public Student() { } public Student(String sid, String name, Integer age, String address) { this.sid = sid; this.name = name; this.age = age; this.address = address; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } 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 String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Student{" + "sid='" + sid + '\'' + ", name='" + name + '\'' + ", age=" + age + ", address='" + address + '\'' + '}'; }} |
三、案例演示
1、JackSon转换
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
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
45
46
47
48
49
|
public class JackSonTest { //对象和json字符串之间的转换 @Test public void jsonAndJsonStr() throws IOException { //创建学生的对象 Student student = new Student(); student.setSid("1001"); student.setName("张无忌"); student.setAge(18); student.setAddress("冰火岛"); //创建jackson的转换对象 ObjectMapper om = new ObjectMapper(); //将对象转为json字符串 String studentStr = om.writeValueAsString(student); System.out.println(studentStr); //将json字符串转为对象 Student stu = om.readValue(studentStr, Student.class); System.out.println("stu = " + stu); } //list集合和json字符串之间的转换 @Test public void listAndJsonStr() throws IOException { //创建list集合 List<Student> studentList = new ArrayList<>(); studentList.add(new Student("1001","刘德华",22,"香港")); studentList.add(new Student("1002","张学友",21,"香港")); studentList.add(new Student("1003","郭富城",18,"香港")); studentList.add(new Student("1004","黎明",19,"香港")); //创建jackson的转换对象 ObjectMapper om = new ObjectMapper(); String listStr = om.writeValueAsString(studentList); System.out.println(listStr); //json字符串转换为集合 List<Student> list = om.readValue(listStr, List.class); System.out.println(list); }} |
2、FastJson装换
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
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
45
46
47
48
49
50
51
52
53
|
public class FastJsonTest { //对象和json字符串之间的转换 @Test public void jsonAndJsonStr() throws IOException { //创建学生的对象 Student student = new Student(); student.setSid("1001"); student.setName("张无忌"); student.setAge(18); student.setAddress("冰火岛"); //创建fastjson的转换对象 JSONObject jsonObject = new JSONObject(); //将对象转换为json字符串 String studentStr = jsonObject.toJSONString(student); System.out.println(studentStr); //将json字符串解析为对象 Student stu = JSON.parseObject(studentStr, Student.class); System.out.println(stu); } //list集合和json字符串之间的转换 @Test public void listAndJsonStr() throws IOException { //创建list集合 List<Student> studentList = new ArrayList<>(); studentList.add(new Student("1001","刘德华",22,"香港")); studentList.add(new Student("1002","张学友",21,"香港")); studentList.add(new Student("1003","郭富城",18,"香港")); studentList.add(new Student("1004","黎明",19,"香港")); //创建fastjson的转换对象 JSONObject jsonObject = new JSONObject(); //将集合转换为json字符串 String listStr = jsonObject.toJSONString(studentList); System.out.println(listStr); //将json字符串转换为集合 List<Student> list = JSON.parseArray(listStr, Student.class); System.out.println(list); }} |
3、Gson转换
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
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
45
46
47
48
49
50
51
52
53
|
public class GsonTest { //对象和json字符串之间的转换 @Test public void jsonAndJsonStr() throws IOException { //创建学生的对象 Student student = new Student(); student.setSid("1001"); student.setName("张无忌"); student.setAge(18); student.setAddress("冰火岛"); //创建json转换对象 Gson gson = new Gson(); //将对象转换为json字符串 String studentStr = gson.toJson(student); System.out.println(studentStr); //将json字符串转换为对象 Student stu = gson.fromJson(studentStr, Student.class); System.out.println(stu); } //list集合和json字符串之间的转换 @Test public void listAndJsonStr() throws IOException { //创建list集合 List<Student> studentList = new ArrayList<>(); studentList.add(new Student("1001","刘德华",22,"香港")); studentList.add(new Student("1002","张学友",21,"香港")); studentList.add(new Student("1003","郭富城",18,"香港")); studentList.add(new Student("1004","黎明",19,"香港")); //创建json转换对象 Gson gson = new Gson(); //将集合转换为json字符串 String listStr = gson.toJson(studentList); System.out.println(listStr); //将json字符串转换为集合 List<Student> list = gson.fromJson(listStr, List.class); System.out.println(list); }} |
四、小结
Gson性能最好,当不断增加的时候到了100000,Gson明细弱于Jackson和FastJson, 这时候FastJson性能是真的牛,另外还可以看到不管数量少还是多,Jackson一直表现优异。
数据量转换比较小时,建议使用Gson,其它情况考虑另外两种。
更多免费技术资料可关注:annalin1203

浙公网安备 33010602011771号