GSON – 将 JSON 数组解析为 Java 数组或列表
了解如何使用 Google GSON 库将包含 json 数组的 JSON 反序列化或解析为 Java 数组或 Java 列表对象。
值得一提的是,JSON 仅具有数组数据类型。 Java 同时具有 – 数组和列表。
1.将 JSON 数组解析为根对象
[
{
"name": "Alex",
"id": 1
},
{
"name": "Brian",
"id": 2
},
{
"name": "Charles",
"id": 3
}
]
public class User
{
private long id;
private String name;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + "]";
}
}
1.1 对象数组
Java 程序将 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);
}
程序输出。
User [id=1, name=Alex]
User [id=2, name=Brian]
User [id=3, name=Charles]
1.2 对象列表
Java 程序将 json 数组作为根反序列化 – 为 Java 对象列表。
import java.lang.reflect.Type;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
String userJson = "[{'name': 'Alex','id': 1}, "
+ "{'name': 'Brian','id':2}, "
+ "{'name': 'Charles','id': 3}]";
Gson gson = new Gson();
Type userListType = new TypeToken<ArrayList<User>>(){}.getType();
ArrayList<User> userArray = gson.fromJson(userJson, userListType);
for(User user : userArray) {
System.out.println(user);
}
程序输出:
User [id=1, name=Alex]
User [id=2, name=Brian]
User [id=3, name=Charles]
2.解析 JSON 数组作为成员
如果它们是非根对象,则 Gson 可以轻松地将 JSON 数组解析为成员。 我们可以按常规方式使用fromJson()
方法,它将正确地将 json 数组解析为所需的 Java 数组或列表。
{
"id" : 1,
"name" : "HR",
"users" : [
{
"name": "Alex",
"id": 1
},
{
"name": "Brian",
"id": 2
},
{
"name": "Charles",
"id": 3
}
]
2.1 成员数组
Java 程序将反序列化 json 数组作为成员对象 – 转换为 Java 对象数组作为成员字段。
public class Department
{
private long id;
private String name;
private User[] users;
//Getters and Setters
@Override
public String toString() {
return "Department [id=" + id + ", name=" + name + ", users=" + Arrays.toString(users) + "]";
}
}
String departmentJson = "{'id' : 1, "
+ "'name': 'HR',"
+ "'users' : ["
+ "{'name': 'Alex','id': 1}, "
+ "{'name': 'Brian','id':2}, "
+ "{'name': 'Charles','id': 3}]}";
Gson gson = new Gson();
Department department = gson.fromJson(departmentJson, Department.class);
System.out.println(department);
程序输出:
Department [id=1, name=HR,
users=[User [id=1, name=Alex],
User [id=2, name=Brian],
User [id=3, name=Charles]]]
2.2 成员列表
Java 程序将 json 数组反序列化为成员对象 – 到 Java 对象列表的成员字段。
public class Department
{
private long id;
private String name;
private List<User> users;
//Getters and Setters
@Override
public String toString() {
return "Department [id=" + id + ", name=" + name + ", users=" + users + "]";
}
}
String departmentJson = "{'id' : 1, "
+ "'name': 'HR',"
+ "'users' : ["
+ "{'name': 'Alex','id': 1}, "
+ "{'name': 'Brian','id':2}, "
+ "{'name': 'Charles','id': 3}]}";
Gson gson = new Gson();
Department department = gson.fromJson(departmentJson, Department.class);
System.out.println(department);
程序输出:
Department [id=1, name=HR,
users=[User [id=1, name=Alex],
User [id=2, name=Brian],
User [id=3, name=Charles]]]
向我提供有关 gson 将 JSON 数组解析为 Java 列表和数组的问题。
学习愉快!
参考文献: