Rumah >Java >javaTutorial >Bagaimana untuk Menggunakan Gson TypeToken dengan Jenis Item Dynamic ArrayList pada Runtime?

Bagaimana untuk Menggunakan Gson TypeToken dengan Jenis Item Dynamic ArrayList pada Runtime?

Patricia Arquette
Patricia Arquetteasal
2024-12-05 17:16:11352semak imbas

How to Use Gson TypeToken with Dynamic ArrayList Item Types at Runtime?

Gson TypeToken dengan Dynamic ArrayList Item Type at Runtime

Apabila bekerja dengan JSON, adalah perkara biasa untuk menukar data JSON kepada objek yang ditaip menggunakan Gson. Walau bagaimanapun, anda mungkin menghadapi senario di mana jenis item ArrayList yang anda perlukan untuk menghuraikan ditentukan secara dinamik pada masa jalan menggunakan refleksi. Dalam kes sedemikian, pendekatan TypeToken tradisional mungkin gagal.

Sebagai contoh, pertimbangkan kod ini:

Type typeOfObjectsList = new TypeToken<ArrayList<myClass>>() {}.getType();
List<myClass> objectsList = new Gson().fromJson(json, typeOfObjectsList);

Kod ini menukar rentetan JSON kepada senarai objek myClass. Tetapi bagaimana jika jenis item ArrayList harus ditentukan secara dinamik?

Untuk mencapai ini, anda boleh memanfaatkan ciri baharu yang diperkenalkan dalam Gson versi 2.8.0: TypeToken.getParameterized. Kaedah ini membolehkan anda mencipta TypeToken dengan jenis parameter yang ditentukan.

Begini cara anda boleh menggunakannya:

private <T> Type setModelAndGetCorrespondingList2(Class<T> type) {
    Type typeOfObjectsListNew = TypeToken.getParameterized(ArrayList.class, type).getType();
    return typeOfObjectsListNew;
}

Dengan menghantar kelas ArrayList dan jenis kelas jenis item dinamik sebagai argumen kepada TypeToken.getParameterized, anda mencipta TypeToken yang mewakili ArrayList dengan jenis item yang dikehendaki. TypeToken ini kemudiannya boleh digunakan sebagai parameter untuk Gson.fromJson untuk menghuraikan data JSON dengan betul ke dalam jenis senarai yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Gson TypeToken dengan Jenis Item Dynamic ArrayList pada Runtime?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn