1、简介
Gson
(又称Google Gson
)是Google
公司发布的一个开放源代码的Java
库,主要用途为序列化Java
对象为JSON
字符串,或反序列化JSON
字符串成Java
对象。
2、依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
3、创建方法
# 1、使用new Gson()
Gson gson = new Gson();
# 2、使用GsonBuilder.build()
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
4、使用方法
//省略getter/setter,构造方法,toSting方法
public class Employee {
private int id;
private String firstName;
private String lastName;
private String email;
}
4.1、Java对象=>Json
// 1、创建一个Employee对象
Employee emp = new Employee(1001, "Lokesh", "Gupta", "howtodoinjava@gmail.com");
// 2、创建一个Gson对象
Gson gson = new Gson();
// 3、将对象转化为Json
String jsonString = gson.toJson(emp);
// 4、打印结果
System.out.println(jsonString);
4.2、JSON=>Java对象
// 1、构建一个Json字符串
String jsonString = "{'id':1001, 'firstName':'Lokesh', 'lastName':'Gupta', 'email':'howtodoinjava@gmail.com'}";
// 2、创建一个Gson对象
Gson gson = new Gson();
// 3、将Json字符串转化为Java对象
Employee empObject = gson.fromJson(jsonString, Employee.class);
// 4、打印结果
System.out.println(empObject);
4.3、Json格式化的美化
// 1、新建一个Gson对象,并设置美化输出
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();
// 2、新建一个Employee 对象
Employee employeeObj = new Employee(1, "Lokesh", "Gupta", "howtogoinjava@gmail.com");
// 3、将字符串格式化并输出
System.out.println(gson.toJson(employeeObj));
4.4、Json数组=>Java对象
String userJson = "[{'name': 'Alex','id': 1}, "
+ "{'name': 'Brian','id':2}, "
+ "{'name': 'Charles','id': 3}]";
Gson gson = new Gson();
User[] userArray = gson.fromJson(userJson, User[].class);
for(User user : userArray) {
System.out.println(user);
}
4.5、Json Array => List
// 1、构建一个Json数组
String userJson = "[{'name': 'Alex','id': 1}, " + "{'name': 'Brian','id':2}, " + "{'name': 'Charles','id': 3}]";
// 2、创建一个Gson对象
Gson gson = new Gson();
// 3、创建一个TypeToken对象
java.lang.reflect.Type userListType = new TypeToken<ArrayList<User>>() {
}.getType();
// 4、将Json数组转为List对象
ArrayList<User> userArray = gson.fromJson(userJson, userListType);
// 5、打印对象
for (User user : userArray) {
System.out.println(user);
}
4.6、List类型成员变量
//省略getter/setter、构造方法、toString方法
public class Department2 {
private long id;
private String name;
private List<User> users;
}
# 转化方法
public static void main(String[] args) {
// 1、创建一个Json字符串
String departmentJson = "{'id' : 1, "
+ "'name': 'HR',"
+ "'users' : ["
+ "{'name': 'Alex','id': 1}, "
+ "{'name': 'Brian','id':2}, "
+ "{'name': 'Charles','id': 3}]}";
// 2、创建一个Gson对象
Gson gson = new Gson();
// 3、将Json字符串转化为Java对象
Department2 department = gson.fromJson(departmentJson, Department2.class);
// 4、输出对象
System.out.println(department);
}