Rumah >Java >javaTutorial >Bagaimana untuk Mengakses Deserializer Jackson Lalai dalam Deserializer Tersuai?
Mengakses Default Deserializer dalam Jackson Custom Deserializer
Apabila menyesuaikan deserialization di Jackson, mungkin terdapat senario di mana anda perlu memanfaatkan kelakuan penyahserikatan lalai sebelum menggunakan logik tersuai. Untuk menangani keperluan ini, berikut ialah panduan komprehensif untuk mengakses penyahserialisasi lalai dari dalam penyahserialisasi tersuai.
Pertimbangkan senario berikut:
public class UserEventDeserializer extends StdDeserializer<User> { public UserEventDeserializer() { super(User.class); } @Override public User deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { User deserializedUser = null; try { deserializedUser = super.deserialize(jp, ctxt, new User()); } catch (UnsupportedOperationException e) { // Access default Jackson deserializer here } // Perform custom logic on deserializedUser... return deserializedUser; } }
Penyelesaian: BeanDeserializerModifier
Pendekatan yang disyorkan untuk mengakses penyahserialisasi lalai adalah melalui a BeanDeserializerModifier. Ini membolehkan anda mengubah suai gelagat lalai untuk kelas kacang tertentu, dalam kes ini, Pengguna.
public class UserDeserializerModifier extends BeanDeserializerModifier { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { if (beanDesc.getBeanClass() == User.class) { return new JsonDeserializer<>(); // Default deserializer } return super.modifyDeserializer(config, beanDesc, deserializer); } }
Contoh Penggunaan
Untuk menggunakan pengubah suai tersuai, daftarkannya dengan SimpleModule dan konfigurasikannya pada anda ObjectMapper:
SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new UserDeserializerModifier()); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(module);
Nota: Melaksanakan ResolvableDeserializer mungkin perlu untuk mengelakkan JsonMappingException apabila menggunakan pendekatan ini.
Pendekatan Alternatif
Walaupun BeanDeserializerModifier adalah boleh dipercayai dan fleksibel penyelesaian, berikut ialah beberapa pendekatan alternatif:
Kesimpulan
Oleh dengan memanfaatkan BeanDeserializerModifier, anda boleh mengakses dan menggunakan deserializer Jackson lalai dengan berkesan dalam deserializer tersuai anda, membolehkan tingkah laku penyahserikatan yang fleksibel dan cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Deserializer Jackson Lalai dalam Deserializer Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!