什么是Gson
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
jar包引入
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
实体类
public class Student {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
public class Classes {
private String id;
private String name;
private List<Student> studentList;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Student> getStudentList() {
return studentList;
}
public void setStudentList(List<Student> studentList) {
this.studentList = studentList;
}
@Override
public String toString() {
return "Classes [id=" + id + ", name=" + name + ", studentList=" + studentList + "]";
}
}
转换操作
public class APP {
public static void main(String[] args) {
Student student = new Student();
student.setId("1");
student.setName("张三");
student.setAge(20);
List<Student> studentList = new ArrayList<Student>();
studentList.add(student);
Classes classes = new Classes();
classes.setId("1");
classes.setName("一班");
classes.setStudentList(studentList);
// java对象转为json
String classesJson = new Gson().toJson(classes);
System.out.println(classesJson);
// json转为java对象
String json = "{\"id\":\"1\",\"name\":\"一班\",\"studentList\":[{\"id\":\"1\",\"name\":\"张三\",\"age\":20}]}";
Classes classes2 = new Gson().fromJson(json, Classes.class);
System.out.println(classes2);
// json转换为list
String jsonList = "[{\"id\":\"1\",\"name\":\"张三\",\"age\":20}]";
studentList = new Gson().fromJson(jsonList, new TypeToken<List<Student>>() {}.getType());
System.out.println(studentList);
// json转为map
Map<String, Object> map = new Gson().fromJson(json, new TypeToken<Map<String, Object>>() {}.getType());
System.out.println(map);
//结果
//[Student [id=1, name=张三, age=20]]
//{"id":"1","name":"一班","studentList":[{"id":"1","name":"张三","age":20}]}
//Classes [id=1, name=一班, studentList=[Student [id=1, name=张三, age=20]]]
//{id=1, name=一班, studentList=[{id=1, name=张三, age=20.0}]}
}