Rumah > Java > javaTutorial > Bagaimana untuk Mensiri dan Menyahseri LocalDate dengan Jackson di Jawa?

Bagaimana untuk Mensiri dan Menyahseri LocalDate dengan Jackson di Jawa?

DDD
Lepaskan: 2024-12-18 15:18:10
asal
244 orang telah melayarinya

How to Serialize and Deserialize LocalDate with Jackson in Java?

Pensiri LocalDate dengan Jackson

Apabila bekerja dengan medan LocalDate Java 8 dan penyirian JSON, anotasi Java 8 standard mungkin tidak selalu mencukupi. Untuk menangani perkara ini, penyelesaian tersuai menggunakan modul Jackson dan ContextResolver dibentangkan.

Jackson menyediakan JSR310Module (kini digantikan dengan JavaTimeModule) untuk mengendalikan pensirilan dan penyahsirilan jenis tarikh dan masa Java 8. Untuk menggunakannya, ikuti langkah berikut:

  1. Tambah kebergantungan pada projek anda:

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.4.0</version>
    </dependency>
    Salin selepas log masuk
  2. Buat ContextResolver untuk mengkonfigurasi ObjectMapper untuk mengendalikan LocalDate dan tarikh dan masa Java 8 yang lain jenis:

    @Provider
    public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
    
        private final ObjectMapper MAPPER;
    
        public ObjectMapperContextResolver() {
            MAPPER = new ObjectMapper();
            MAPPER.registerModule(new JavaTimeModule());
            MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        }
    
        @Override
        public ObjectMapper getContext(Class<?> type) {
            return MAPPER;
        }
    
    }
    Salin selepas log masuk
  3. Gunakan ContextResolver dalam kelas sumber anda untuk menyesuaikan ObjectMapper untuk titik akhir anda:

    @Path("person")
    public class LocalDateResource {
    
        @GET
        @Produces(MediaType.APPLICATION_JSON)
        public Response getPerson() {
            Person person = new Person();
            person.birthDate = LocalDate.now();
            return Response.ok(person).build();
        }
    
        @POST
        @Consumes(MediaType.APPLICATION_JSON)
        public Response createPerson(Person person) {
            return Response.ok(
                    DateTimeFormatter.ISO_DATE.format(person.birthDate)).build();
        }
    
        public static class Person {
            public LocalDate birthDate;
        }
    }
    Salin selepas log masuk

Dengan pendekatan ini , medan LocalDate akan disiri dan dinyahsiri dengan betul apabila menggunakan Jackson untuk pengendalian JSON. Penyelesaian ini juga menangani keperluan untuk mengelakkan pensirilan tarikh sebagai cap masa dengan menetapkan tulis-tarikh-sebagai-cap masa kepada palsu.

Nota: Modul JSR310 telah ditamatkan dalam Jackson versi 2.7 dan ke atas . Sebaliknya, disyorkan untuk menggunakan JavaTimeModule, yang merupakan sebahagian daripada kebergantungan yang sama.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri LocalDate dengan Jackson di Jawa?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan