Rumah >Java >javaTutorial >Bagaimana untuk Menyahserialisasi JSON Polimorfik Menggunakan ObjectMapper Jackson tanpa Ralat Penyusunan?
Jackson dan Polymorphic JSON: Menangani Ralat Penyusunan untuk ObjectNode Deserialization
Siasatan ini bertujuan untuk menyelesaikan ralat kompilasi yang dihadapi semasa penyahserikatan JSON polimorfik menggunakan Jackson's ObjectMapper. Secara khusus, ralat terletak pada baris:
return mapper.readValue(root, animalClass);
Penjelasan Isu:
Ralat berpunca daripada ketidakpadanan antara tandatangan kaedah readValue() dan argumen disediakan. readValue() menjangkakan dua argumen: JsonParser dan Class, tetapi dalam kod ini, ObjectNode (bukan JsonParser) dan subjenis Haiwan (bukan Haiwan itu sendiri) sedang diluluskan.
Anotasi- Penyelesaian Polimorfisme Berasaskan:
Sebagai alternatif kepada pendekatan berasaskan pendaftaran yang disebut dalam tutorial, pertimbangkan menggunakan pendekatan berasaskan anotasi Jackson untuk penyahserialisasian polimorfik. Ini melibatkan:
Contoh Pelaksanaan:
// An abstract base class for animals @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY) @JsonSubTypes({ @JsonSubTypes.Type(value = Dog.class, name = "Dog"), @JsonSubTypes.Type(value = Cat.class, name = "Cat") }) public abstract class Animal { ... } // Subclass for dogs public class Dog extends Animal { ... } // Subclass for cats public class Cat extends Animal { ... } // Test class public class Test { public static void main(String[] args) { ObjectMapper mapper = new ObjectMapper(); ... // Serialize and deserialize animals as shown in the provided solution } }
Oleh menggunakan anotasi, Jackson boleh membuat kesimpulan jenis objek berdasarkan maklumat jenis yang disediakan dalam JSON, mengelakkan keperluan untuk pendaftaran dan menyelesaikan ralat penyusunan.
Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasi JSON Polimorfik Menggunakan ObjectMapper Jackson tanpa Ralat Penyusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!