Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธี Parse JSON เป็น Gson Tree Model ใน Java

Gson Library ใช้ Parse JSON String เป็น Tree Model ได้ ใช้ JsonParser Parse JSON String เป็น Tree Model Type JsonElement เมธอด getAsJsonObject() ของ JsonElement ใช้ดึง Element เป็น JsonObject และ getAsJsonArray() ใช้ดึงเป็น JsonArray

Syntax

public JsonObject getAsJsonObject()
public JsonArray getAsJsonArray()

ตัวอย่าง: Parse JSON เป็น Tree Model

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);
        }
    }
}

// Student class
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 + '}';
    }
}

ผลลัพธ์

Student Info:
Name is: "Adithya"
Age is: 20
Year of Passout: 2005
Subjects:["MATHEMATICS","PHYSICS","CHEMISTRY"]

Use Case: Tree Model เหมาะสำหรับ JSON ที่โครงสร้างไม่แน่นอน หรือต้องการเข้าถึงบางส่วน ไม่ต้อง Map เป็น POJO ทั้งหมด