Menggunakan Serializer Tersuai dengan Jackson
Jackson ialah perpustakaan pemprosesan JSON yang popular di Java yang terkenal dengan kefleksibelan dan prestasinya. Untuk mengendalikan keperluan bersiri khusus, anda boleh menggunakan penyeri tersuai. Artikel ini menyediakan panduan langkah demi langkah untuk mencipta dan menggunakan penyeri bersiri tersuai dengan Jackson.
Pertimbangkan senario di mana anda mempunyai dua kelas Java, Pengguna dan Item. Anda mahu mensirikan objek Item kepada JSON, menyatakan peraturan pesiri tersuai untuk Pengguna dan Item.
Untuk mencipta penyeri tersuai untuk Item, anda boleh menentukan kelas yang memanjangkan JsonSerializer
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.id); jgen.writeNumberField("itemNr", value.itemNr); jgen.writeNumberField("createdBy", value.user.id); jgen.writeEndObject(); } }
Walau bagaimanapun, mendaftarkan serializer tersuai secara langsung mungkin membawa kepada ralat yang anda hadapi. Sebaliknya, anda harus mendaftarkannya menggunakan SimpleModule:
ObjectMapper mapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
Akhir sekali, anda boleh menggunakan ObjectMapper untuk mensiri objek Item anda kepada JSON, menggunakan peraturan pesiri tersuai.
Sebagai alternatif, untuk pengendalian Medan tarikh dalam objek Java anda, anda boleh mencipta penyeri tersuai seperti ini:
public class CustomDateSerializer extends SerializerBase<Date> { public CustomDateSerializer() { super(Date.class, true); } @Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)"); String format = formatter.format(value); jgen.writeString(format); } }
Oleh menganotasi medan Tarikh dengan @JsonSerialize(menggunakan = CustomDateSerializer.class), penyiaran tersuai akan digunakan secara automatik.
Atas ialah kandungan terperinci Bagaimana Menggunakan Pensiri Tersuai dengan Jackson untuk Pemprosesan JSON yang Cekap di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!