Thư viện Gson có thể dùng để parse chuỗi JSON thành Tree Model. Dùng JsonParser để parse chuỗi JSON thành Tree Model kiểu JsonElement. Phương thức getAsJsonObject() của JsonElement lấy element dạng JsonObject, getAsJsonArray() lấy element dạng JsonArray.
Cú pháp
public JsonObject getAsJsonObject() public JsonArray getAsJsonArray()
Ví dụ minh họa
import java.util.List;
import com.google.gson.*;
public class JsonTreeModelTest {
public static void main(String args[]){
String jsonStr = "{\"name\":\"Adithya\",\"age\":20,\"year of passout\":2005,\"subjects\": [\"MATHEMATICS\",\"PHYSICS\",\"CHEMISTRY\"]}";
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(jsonStr);
if(jsonElement.isJsonObject()) {
JsonObject studentObj = jsonElement.getAsJsonObject();
System.out.println("Student Info:");
System.out.println("Name is: " + studentObj.get("name"));
System.out.println("Age is: " + studentObj.get("age"));
System.out.println("Year of Passout: " + studentObj.get("year of passout"));
JsonArray jsonArray = studentObj.getAsJsonArray("subjects");
System.out.println("Subjects:" + jsonArray);
}
}
}
// Lớp Student (không dùng trong ví dụ nhưng định nghĩa sẵn)
class Student {
private String name;
private int age;
private int passoutYear;
private List subjects;
public Student(String name, int age, int passoutYear, List subjects) {
this.name = name;
this.age = age;
this.passoutYear = passoutYear;
this.subjects = subjects;
}
@Override
public String toString() {
return "Student{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", year of passout=" + passoutYear + ", subjects=" + subjects + '}';
}
}
Kết quả đầu ra
Student Info: Name is: "Adithya" Age is: 20 Year of Passout: 2005 Subjects:["MATHEMATICS","PHYSICS","CHEMISTRY"]
Lưu ý: Tree Model (JsonElement, JsonObject, JsonArray) phù hợp khi không có POJO mapping hoặc cần thao tác động trên cấu trúc JSON. Từ Gson 2.10+, JsonParser đã deprecated, nên dùng JsonParser.parseString() static method.