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

วิธี Deserialize JSON Array เป็น List Generic Type ใน Java ด้วย Gson

ไลบรารี Gson มีคลาส com.google.gson.reflect.TypeToken สำหรับเก็บ Generic Type โดยสร้าง TypeToken แล้วส่งประเภทคลาสเข้าไป Gson จึงรู้จักคลาสภายใน Generic ได้

Syntax

public class TypeToken<T> extends Object

ตัวอย่าง: Deserialize JSON Array เป็น List<Student>

import java.lang.reflect.Type;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.*;

public class JSONArrayToListTest {
    public static void main(String[] args) throws Exception {
        String jsonStr = "[{\"name\":\"Adithya\", \"course\":\"Java\"}," + 
                         "{\"name\":\"Ravi\", \"course\":\"Python\"}]";
        
        Type listType = new TypeToken<ArrayList<Student>>() {}.getType();
        List<Student> students = new Gson().fromJson(jsonStr, listType);
        System.out.println(students);
    }
}

// Student class
class Student {
    String name;
    String course;
    
    @Override
    public String toString() {
        return "Student [name=" + name + ", course=" + course + "]";
    }
}

ผลลัพธ์

[Student [name=Adithya, course=Java], Student [name=Ravi, course=Python]]

จุดสำคัญ: ใช้ new TypeToken<ArrayList<Student>>() {}.getType() เพื่อให้ Gson รู้จัก Generic Type ในขณะ Runtime (Type Erasure)