一、使用 Gson 解析
GSON 是 Google提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库,可以快速的将一个 Json 字符转成一个 Java 对象,或者将一个 Java 对象转化为 Json 字符串。
gson 在 github 上开源地址:https://github.com/google/gson
二进制开发包下载:gson 二进制开发包下载地址:https://search.maven.org/artifact/com.google.code.gson/gson/2.8.5/jar
1、导入 gson 依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
2、JavaBean 与 json 的互转
1 @Test
2 public void test1() {
3 Person person = new Person(1, "蔡晓磊");
4 // 创建 Gson 对象实例
5 Gson gson = new Gson();
6
7 // toJson 方法可以把 java 对象转换成为 json 字符串
8 String personStr = gson.toJson(person);
9 System.out.println("personStr = " + personStr);
10
11 // fromJson 把 json 字符串转换回 Java 对象
12 // 第一个参数是 json 字符串
13 // 第二个参数是转换回去的 Java 对象类型
14 Person personJson = gson.fromJson(personStr, Person.class);
15 System.out.println("personJson = " + personJson);
16 }
3、List 和 json 的互转
1 @Test
2 public void test2() {
3
4 List<Person> personList = new ArrayList<>();
5
6 personList.add(new Person(1, "张三"));
7 personList.add(new Person(2, "李四"));
8
9 // 创建 Gson 对象实例
10 Gson gson = new Gson();
11
12 // toJson 把 List 转换为 json 字符串
13 String personStr = gson.toJson(personList);
14 System.out.println("personStr = " + personStr);
15
16 //List<Person> jsonList = gson.fromJson(personStr, new PersonListType().getType());
17 List<Person> jsonList = gson.fromJson(personStr, new TypeToken<List<Person>>(){}.getType());
18 System.out.println(jsonList);
19 System.out.println(jsonList.get(0));
20 }
4、map 和 json的互转
1 @Test
2 public void test3() {
3
4 Map<Integer, Person> map = new HashMap<>();
5
6 map.put(1, new Person(1, "张三"));
7 map.put(2, new Person(2, "李四"));
8
9 // 创建 Gson 对象实例
10 Gson gson = new Gson();
11
12 // toJson 把 map 集合转换成为 json 字符串
13 String personStr = gson.toJson(map);
14 System.out.println("personStr = " + personStr);
15
16 //HashMap<Integer, Person> personMap = gson.fromJson(personStr, new PersonMapType().getType());
17 HashMap<Integer, Person> personMap = gson.fromJson(personStr, new TypeToken<Map<Integer, Person>>(){}.getType());
18 System.out.println(personMap);
19 System.out.println(personMap.get(1));
20 }