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
@Test
public 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串转换为对象
@Test
public 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
@Test
public 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:
@Test
public 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
@Test
public 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()方法即可。