Rumah >Java >javaTutorial >Bagaimanakah Jackson Boleh Menyahserialisasikan JSON ke dalam Kelas Generik?

Bagaimanakah Jackson Boleh Menyahserialisasikan JSON ke dalam Kelas Generik?

Susan Sarandon
Susan Sarandonasal
2024-11-21 07:18:10303semak imbas

How Can Jackson Deserialize JSON into Generic Classes?

Menyahsiri JSON menjadi Kelas Generik dengan Jackson

Apabila bekerja dengan data JSON, kita mungkin menghadapi senario di mana kita perlu menyahsiri rentetan JSON ke dalam kelas dengan parameter generik. Pustaka Jackson menyediakan cara untuk mengendalikan senario penyahserialisasian sedemikian dengan berkesan.

Untuk menyahsiri rentetan JSON ke dalam kelas generik, pertama sekali kita perlu mentakrifkan kelas dengan parameter jenis generik:

class Data<T> {
    int found;
    Class<T> hits
}

Kini, untuk menyahsiri JSON menjadi contoh Data, kita boleh menggunakan kelas TypeReference yang disediakan oleh Jackson. TypeReference membolehkan kami menentukan jenis kelas generik dan menyahsiri JSON dengan sewajarnya.

ObjectMapper mapper = new ObjectMapper();
String jsonString = "...";

TypeReference<Data<String>> typeRef = new TypeReference<>() {};
Data<String> data = mapper.readValue(jsonString, typeRef);

Dalam contoh ini, kami mencipta TypeReference untuk Data dan luluskannya sebagai hujah kedua untuk readValue. Jackson kemudiannya akan menyahsiri rentetan JSON menjadi contoh Data.

Adalah penting untuk ambil perhatian bahawa kami perlu menyediakan jenis parameter generik khusus apabila menggunakan TypeReference. Dalam kes ini, kami telah menentukan String sebagai jenis untuk T.

Dengan menggunakan TypeReference, kami boleh menyahsiri JSON ke dalam kelas generik dengan berkesan dengan Jackson, membolehkan kami mengendalikan struktur data yang kompleks dengan mudah.

Atas ialah kandungan terperinci Bagaimanakah Jackson Boleh Menyahserialisasikan JSON ke dalam Kelas Generik?. 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