Cara Memanggil Penyahserialisasi Lalai daripada Penyahserialisasi Tersuai di Jackson
Apabila menyesuaikan penyahserian dalam Jackson, anda mungkin menghadapi keperluan untuk mengakses lalai deserializer untuk mengisi objek anda. Ini boleh dicapai dengan menggunakan BeanDeserializerModifier dan mendaftarkannya melalui SimpleModule.
Berikut ialah contoh pelaksanaan:
public class UserEventDeserializer extends StdDeserializer<User> implements ResolvableDeserializer { 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 Exception { 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); } }
Dengan mendaftar ini pengubah suai, anda boleh mengakses penyahserialisasi lalai dan pra-isi objek anda dalam tersuai anda deserializer tanpa menyebabkan pengecualian.
Atas ialah kandungan terperinci Bagaimana untuk Memanfaatkan Deserializer Lalai Jackson dalam Deserializer Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!