Rumah > Java > javaTutorial > Bagaimana untuk Memformat LocalDate Java 8 dengan betul dengan Jackson?

Bagaimana untuk Memformat LocalDate Java 8 dengan betul dengan Jackson?

Patricia Arquette
Lepaskan: 2024-12-17 17:35:14
asal
580 orang telah melayarinya

How to Properly Format Java 8's LocalDate with Jackson?

Menggunakan Jackson untuk Memformat LocalDate dalam Java 8

Dalam artikel ini, kami akan meneroka cara memformat java.time.LocalDate menggunakan Jackson dalam Java 8.

Penerangan Masalah

Apabila bekerja dengan Java Medan LocalDate 8, cuba menggunakan anotasi yang sama yang digunakan untuk java.util.Date mungkin tidak menghasilkan hasil yang diingini.

Percubaan Gagal

@JsonDeserialize(using = LocalDateDeserializer.class)  
@JsonSerialize(using = LocalDateSerializer.class)  
private LocalDate dateOfBirth;
Salin selepas log masuk

Penyelesaian

Untuk dengan betul format LocalDate, langkah berikut sepatutnya diambil:

  1. Tambahkan kebergantungan jackson-datatype-jsr310:

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

    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.SerializationFeature;
    import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
    import javax.ws.rs.ext.ContextResolver;
    import javax.ws.rs.ext.Provider;
    
    @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. Daftarkan ObjectMapperContextResolver dalam kelas sumber:

    @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

Ujian

Anda kini boleh menguji pemformatan dengan mengeluarkan permintaan HTTP berikut:

# Get person
curl -v http://localhost:8080/api/person

# Create person
curl -v -POST -H "Content-Type:application/json" -d "{\"birthDate\":\"2015-03-01\"}" http://localhost:8080/api/person
Salin selepas log masuk

Dijangka Maklum balas:

{"birthDate":"2015-03-01"}
Salin selepas log masuk
2015-03-01
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memformat LocalDate Java 8 dengan betul dengan 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