Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Phân tích JSON sang Gson Tree Model trong Java

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.