Gson是Google開源的用于Java對(duì)象和JSON數(shù)據(jù)的序列化和反序列化庫(kù)。在使用Gson解析JSON數(shù)據(jù)時(shí),我們可以定義Bean對(duì)象來(lái)與JSON的key-value對(duì)應(yīng)。下面我們來(lái)看看如何使用Gson將JSON數(shù)據(jù)解析成Java對(duì)象。
public class User {
private String name;
private int age;
private Listhobbies;
// getters and setters
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", hobbies=" + hobbies +
'}';
}
}
public class GsonExample {
public static void main(String[] args) {
String json = "{\"name\":\"Tom\",\"age\":23,\"hobbies\":[\"reading\",\"running\"]}";
Gson gson = new Gson();
User user = gson.fromJson(json, User.class);
System.out.println(user.toString());
}
}
在這段代碼中,我們定義了一個(gè)User對(duì)象,它有name、age和hobbies三個(gè)屬性。我們按照J(rèn)SON的格式定義了一個(gè)字符串,使用Gson的fromJson方法將JSON數(shù)據(jù)解析成User對(duì)象,并打印出來(lái)。
在定義User對(duì)象時(shí)可以使用注解來(lái)設(shè)置對(duì)應(yīng)的JSON字段名,如下面代碼所示:
public class User {
@SerializedName("userName")
private String name;
private int age;
private Listhobbies;
// getters and setters
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", hobbies=" + hobbies +
'}';
}
}
使用@SerializedName注解可以指定name屬性對(duì)應(yīng)的JSON字段名為userName。
除了解析JSON數(shù)據(jù),我們還可以使用Gson將Java對(duì)象序列化成JSON數(shù)據(jù)。下面是一個(gè)例子:
public class GsonExample {
public static void main(String[] args) {
User user = new User();
user.setName("Tom");
user.setAge(23);
user.setHobbies(Arrays.asList("reading", "running"));
Gson gson = new Gson();
String json = gson.toJson(user);
System.out.println(json);
}
}
在這段代碼中,我們創(chuàng)建了一個(gè)User對(duì)象并將其序列化成JSON數(shù)據(jù)。使用Gson的toJson方法可以將Java對(duì)象序列化成對(duì)應(yīng)的JSON字符串。
在使用Gson解析JSON時(shí),我們需要定義好Java對(duì)象與JSON key-value之間的映射關(guān)系。通過(guò)使用Gson提供的注解,我們可以輕松地實(shí)現(xiàn)這一功能。