Gson's TypeToken ialah alat mudah untuk bekerja dengan jenis data JSON tertentu. Walau bagaimanapun, ia menghadapi had apabila berurusan dengan ArrayLists yang jenis itemnya ditetapkan secara dinamik semasa masa jalan. Artikel ini menyelidiki penyelesaian untuk cabaran ini, membolehkan penciptaan ArrayLists dengan pelbagai jenis item melalui refleksi.
Pada mulanya, percubaan dibuat untuk mencapai ini menggunakan pelaksanaan TypeToken tersuai, tetapi ia terbukti tidak berjaya, sebagai pengecualian "java.sql.SQLException: Gagal menukar kepada perwakilan dalaman" muncul semasa JSON penghuraian.
Penyelesaian terletak pada versi Gson yang kemudian, di mana TypeToken menyediakan kaedah #getParameterized. Kaedah ini membolehkan penciptaan TypeTokens dengan argumen jenis tersuai. Dalam senario ini, matlamatnya ialah untuk mencipta TypeToken yang mewakili ArrayList dengan jenis item tertentu yang ditentukan secara dinamik, 'myClass'. Coretan kod yang dikemas kini mengambil bentuk berikut:
TypeToken.getParameterized(ArrayList.class, myClass).getType()
Pendekatan baharu ini berkesan menjana TypeToken yang sepadan dengan struktur ArrayList dinamik yang dikehendaki, menyelesaikan had sebelumnya dan membolehkan penukaran lancar data JSON ke dalam ArrayList dengan jenis item yang ditetapkan secara dinamik.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan Gson's TypeToken dengan Jenis Item Dynamic ArrayList?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!