Rumah > Java > javaTutorial > Bagaimana untuk Melaksanakan Pensiri Tersuai dengan Betul dengan `handledType()` dan `serialize()` Jackson?

Bagaimana untuk Melaksanakan Pensiri Tersuai dengan Betul dengan `handledType()` dan `serialize()` Jackson?

Susan Sarandon
Lepaskan: 2024-11-24 15:21:17
asal
330 orang telah melayarinya

How to Properly Implement Custom Serializers with Jackson's `handledType()` and `serialize()`?

Menggunakan Serializer Tersuai dengan Jackson

Dalam kod anda, anda menerima IllegalArgumentException kerana JsonSerializer memerlukan kaedah handledType() untuk menentukan jenisnya pemegang. Begini cara untuk melaksanakannya dengan betul menggunakan handledType() dan serialize():

public class ItemSerializer extends JsonSerializer<Item> {

  @Override
  public void serialize(Item value, JsonGenerator jgen,
                        SerializerProvider provider) throws IOException,
                                                       JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeNumberField("id", value.getId());
    jgen.writeNumberField("itemNr", value.getItemNr());
    jgen.writeNumberField("createdBy", value.getCreatedBy().getId());
    jgen.writeEndObject();
  }

  @Override
  public Class<Item> handledType() {
    return Item.class;
  }
}
Salin selepas log masuk

Menyepadukan dengan Jackson:

Selepas menentukan penyeri tersuai, anda perlu menyepadukan itu dengan Jackson. Ini boleh dicapai menggunakan SimpleModule:

ObjectMapper mapper = new ObjectMapper();
SimpleModule simpleModule = new SimpleModule("SimpleModule",
                                              new Version(1,0,0,null));
simpleModule.addSerializer(new ItemSerializer());
mapper.registerModule(simpleModule);
Salin selepas log masuk

Sekarang, anda boleh menggunakan pemeta tersuai untuk mensiri objek Item.

Menyerikan Objek Pengguna:

Untuk menyerikan objek Pengguna dengan format tersuai, anda boleh menentukan objek yang berasingan serializer:

public class UserSerializer extends JsonSerializer<User> {

  @Override
  public void serialize(User value, JsonGenerator jgen,
                        SerializerProvider provider) throws IOException,
                                                       JsonProcessingException {
    jgen.writeStartObject();
    jgen.writeNumberField("id", value.getId());
    jgen.writeEndObject();
  }

  @Override
  public Class<User> handledType() {
    return User.class;
  }
}
Salin selepas log masuk

Jangan lupa untuk menyepadukannya dengan Jackson:

simpleModule.addSerializer(new UserSerializer());
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pensiri Tersuai dengan Betul dengan `handledType()` dan `serialize()` Jackson?. 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