Rumah > Java > javaTutorial > Bagaimana untuk Memanfaatkan Deserializer Lalai Jackson dalam Deserializer Tersuai?

Bagaimana untuk Memanfaatkan Deserializer Lalai Jackson dalam Deserializer Tersuai?

Patricia Arquette
Lepaskan: 2024-12-10 09:16:12
asal
878 orang telah melayarinya

How to Leverage Jackson's Default Deserializer within a Custom Deserializer?

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);
  }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan