1. 导入依赖
<dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version>
</dependency>
2. 使用Gson进行解析
2.1 Gson解析普通对象
package com.jiang.partnetbackend.model.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;/*** @author Lenovo* @date 2024/4/5* @time 16:05* @project partnet-backend**/@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {private int age;private String name;private String sex;
}
2.1.1 将Java对象转json
@Testpublic void testJavatoGson(){Person person=new Person(10,"小明","男");Gson gson = new Gson();String res = gson.toJson(person);System.out.println("java对象转json:"+res);}
2.1.2 将json字符转json
调用Gson的 <T> t fromJson(String, Class)方法,将Json串转换为对象
@Testpublic void testGsontoJava(){Person person=new Person(10,"小明","男");Gson gson = new Gson();String res = gson.toJson(person);System.out.println("java对象转json:"+res);Person resPerson = gson.fromJson(res, Person.class);System.out.println("json转java:"+resPerson);}
2.2 Gson解析List
2.2.1 List转json
@Testpublic void testListToJson(){// 先准备一个List集合List<Person> list = new ArrayList<Person>();list.add(new Person(16, "小明","男"));list.add(new Person( 16,"小红","女"));System.out.println(list);// 创建Gson实例Gson gson = new Gson();// 调用Gson的toJson方法String listJson = gson.toJson(list);System.out.println("list 转json:"+listJson);}
2.2.2 json转List:
@Testpublic void testJsontoList(){// 先准备一个List集合List<Person> list = new ArrayList<Person>();list.add(new Person(16,"小明","男"));list.add(new Person( 16,"小红","女"));System.out.println(list);// 创建Gson实例Gson gson = new Gson();// 调用Gson的toJson方法String listJson = gson.toJson(list);System.out.println("list 转json:"+listJson);List<Person> personList = gson.fromJson(listJson, new TypeToken<List<Person>>() {}.getType());System.out.println(personList);}
此方法参数中的Type类型可以通过Gson包提供TypeToken<>类获取。这个类带有泛型,且这个泛型就是Json串转换成为对象后的类型(此处是List<Person>)我们不需要重写这个类中的任何方法,只需要创建这个类的一个匿名内部类并调用getTpye()方法即可。
2.3 Gson 解析Map
@Testpublic void testMapToJson(){Map<String, Person> map = new HashMap<>();map.put("p1", new Person(16,"小明","男"));map.put("p2", new Person( 16,"小红","女"));Gson gson = new Gson();String mapJson = gson.toJson(map);System.out.println(mapJson);Map<String, Person> jsonMap = gson.fromJson(mapJson, new TypeToken<Map<String, Person>>() { }.getType());System.out.println(jsonMap);}
json 转Map的方法与转List的方法类似,参数中的Type类型可以通过Gson包提供TypeToken<>类获取。这个类带有泛型,且这个泛型就是Json串转换成为对象后的类型(此处是Map<key,values>)我们不需要重写这个类中的任何方法,只需要创建这个类的一个匿名内部类并调用getTpye()方法即可。