Rumah >Java >javaTutorial >Bagaimana Memformat Objek Java 8 LocalDate dengan betul dalam JSON menggunakan Jackson?

Bagaimana Memformat Objek Java 8 LocalDate dengan betul dalam JSON menggunakan Jackson?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-30 01:54:08344semak imbas

How to Properly Format Java 8 LocalDate Objects in JSON using Jackson?

Memformat Java 8 LocalDate dengan Jackson

Masalah:

Dalam aplikasi Java, menukar Tarikh objek ke dalam format JSON dengan corak tarikh tertentu boleh menjadi mudah menggunakan anotasi @JsonFormat. Walau bagaimanapun, apabila berurusan dengan java.time.LocalDate yang diperkenalkan dalam Java 8, pendekatan yang sama mungkin tidak berfungsi seperti yang diharapkan.

Penyelesaian Cadangan:

Untuk menyesuaikan pemformatan Objek LocalDate untuk siri JSON, pendekatan berikut boleh digunakan:

  1. Konfigurasikan Jackson ObjectMapper:
  2. Buat pelaksanaan ContextResolver untuk ObjectMapper.
  3. Daftar JavaTimeModule dalam ObjectMapper untuk menyokong siri LocalDate.
  4. Dayakan ciri WRITE_DATES_AS_TIMESTAMPS kepada false, sebagai LocalDate mewakili tarikh tanpa cap waktu.
  5. Gunakan ContextResolver dalam Aplikasi JAX-RS:
  6. Tentukan kelas perkhidmatan JAX-RS dengan anotasi @Provider.
  7. Laksanakan antara muka ObjectMapperContextResolver untuk menyediakan yang dikonfigurasikan ObjectMapper.
  8. Anotasi Kelas Sumber untuk Penukaran JSON:
  9. Tambah anotasi @JsonDeserialize dan @JsonSerialize dengan kelas deserializer dan serializer yang betul untuk mengendalikan penukaran LocalDate.

Contoh Kod:

Penyelesaikan Konteks:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {
    @Override
    public ObjectMapper getContext(Class<?> type) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new JavaTimeModule());
        mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        return mapper;
    }
}

Kelas Sumber:

import java.time.LocalDate;

@Path("person")
public class LocalDateResource {
    @GET
    public Person getPerson() {
        return new Person(LocalDate.now());
    }
}

Orang Kelas:

public class Person {
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate birthDate;
}

Dengan melaksanakan pendekatan ini, Objek LocalDate boleh disiri dan dinyahsiri dengan berkesan, membolehkan pemformatan JSON yang fleksibel.

Atas ialah kandungan terperinci Bagaimana Memformat Objek Java 8 LocalDate dengan betul dalam JSON menggunakan Jackson?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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