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:
Tambah kebergantungan pada projek anda:
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.4.0</version> </dependency>
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; } }
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; } }
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!