Rumah >Java >javaTutorial >Bagaimana untuk Menyahserialisasikan Koleksi Generik dalam Gson Menggunakan TypeToken?

Bagaimana untuk Menyahserialisasikan Koleksi Generik dalam Gson Menggunakan TypeToken?

Linda Hamilton
Linda Hamiltonasal
2024-12-07 03:57:19752semak imbas

How to Deserialize Generic Collections in Gson Using TypeToken?

Menyahserialisasi Koleksi Generik dengan Gson

Anda ingin menyahsiri objek senarai menggunakan Google Gson, tetapi anda menghadapi cabaran kerana jenis generik.

Alternatif Pendekatan

Ralat yang anda hadapi menunjukkan bahawa List() {} baharu tidak melaksanakan kaedah abstrak yang diwarisi. Sebaliknya, anda boleh menggunakan TypeToken untuk menentukan jenis generik pada masa jalan:

Type listType = new TypeToken<List<MyClass>>() {}.getType();
MyClass mc = new Gson().fromJson(result, listType);

Pengendalian Pengecualian

NullPointerException yang anda hadapi menunjukkan bahawa jenis senarai itu bukan diformat dengan betul. Semak perkara berikut:

  • Pastikan keputusan itu tidak batal.
  • Nyahpepijat listType untuk mengesahkan bahawa jenis parameter ditetapkan dengan betul.

Penjelasan TypeToken

Kelas TypeToken membolehkan anda menangkap generik jenis pada masa penyusunan dan mewakilinya sebagai jenis masa jalan. Subkelas tanpa namanya merangkum maklumat jenis tertentu, membolehkan Gson menyahsiri objek yang sepadan dengan betul.

Rujukan untuk Masa Depan Pembangun

  • https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/TypeToken.html
  • https://stackoverflow.com/questions/12112101/gson-and-multiple-type-parameters-in-generic-class

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan Koleksi Generik dalam Gson Menggunakan TypeToken?. 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