Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Memanfaatkan Gelagat Penyahserialisasi Lalai Dalam Penyahserialisasi Jackson Tersuai?
Penyahserikatan Tersuai dengan Gelagat Lalai dalam Jackson
Apabila melaksanakan penyahserialisasi tersuai dalam Jackson, mungkin perlu menggunakan penyahserialisasi lalai untuk pra- isikan objek sebelum menggunakan logik tersuai. Artikel ini menangani cabaran untuk mengakses deserializer lalai daripada yang tersuai.
Untuk mencapai matlamat ini, buat BeanDeserializerModifier dan daftarkannya menggunakan SimpleModule. Berikut ialah contoh:
public class UserEventDeserializer extends StdDeserializer<User> implements ResolvableDeserializer { private static final long serialVersionUID = 7923585097068641765L; private final JsonDeserializer<?> defaultDeserializer; public UserEventDeserializer(JsonDeserializer<?> defaultDeserializer) { super(User.class); this.defaultDeserializer = defaultDeserializer; } @Override public User deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { User deserializedUser = (User) defaultDeserializer.deserialize(jp, ctxt); // Special logic return deserializedUser; } @Override public void resolve(DeserializationContext ctxt) throws JsonMappingException { ((ResolvableDeserializer) defaultDeserializer).resolve(ctxt); } public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException { SimpleModule module = new SimpleModule(); module.setDeserializerModifier(new BeanDeserializerModifier() { @Override public JsonDeserializer<?> modifyDeserializer(DeserializationConfig config, BeanDescription beanDesc, JsonDeserializer<?> deserializer) { if (beanDesc.getBeanClass() == User.class) return new UserEventDeserializer(deserializer); return deserializer; } }); ObjectMapper mapper = new ObjectMapper(); mapper.registerModule(module); User user = mapper.readValue(new File("test.json"), User.class); } }
Dalam contoh ini:
Dengan mendaftarkan modul ini dengan ObjectMapper, logik penyahserialisasian tersuai boleh digunakan sambil masih mendapat manfaat daripada gelagat lalai untuk kelas lain.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanfaatkan Gelagat Penyahserialisasi Lalai Dalam Penyahserialisasi Jackson Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!