Heim > Java > javaLernprogramm > Wie formatiere ich Java 8 LocalDate-Objekte in JSON mit Jackson richtig?

Wie formatiere ich Java 8 LocalDate-Objekte in JSON mit Jackson richtig?

Mary-Kate Olsen
Freigeben: 2024-12-30 01:54:08
Original
329 Leute haben es durchsucht

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

Formatieren von Java 8 LocalDate mit Jackson

Problem:

Konvertieren von Date in Java-Anwendungen Mithilfe der Annotation @JsonFormat können Objekte mit bestimmten Datumsmustern problemlos in das JSON-Format konvertiert werden. Beim Umgang mit java.time.LocalDate, das in Java 8 eingeführt wurde, funktioniert der gleiche Ansatz jedoch möglicherweise nicht wie erwartet.

Vorgeschlagene Lösung:

So passen Sie die Formatierung an Wenn Sie LocalDate-Objekte für die JSON-Serialisierung verwenden, kann der folgende Ansatz verwendet werden:

  1. Jackson konfigurieren ObjectMapper:
  2. Erstellen Sie eine ContextResolver-Implementierung für ObjectMapper.
  3. Registrieren Sie das JavaTimeModule im ObjectMapper, um die LocalDate-Serialisierung zu unterstützen.
  4. Aktivieren Sie die Funktion WRITE_DATES_AS_TIMESTAMPS auf „false“, als LocalDate stellt Daten ohne dar Zeitstempel.
  5. ContextResolver in JAX-RS-Anwendung verwenden:
  6. Definieren Sie eine JAX-RS-Serviceklasse mit @Provider-Annotation.
  7. Implementieren Sie die ObjectMapperContextResolver-Schnittstelle um den konfigurierten ObjectMapper bereitzustellen.
  8. Annotate Ressourcenklasse für die JSON-Konvertierung:
  9. Fügen Sie die Annotationen @JsonDeserialize und @JsonSerialize mit den richtigen Deserializer- und Serializer-Klassen hinzu, um die LocalDate-Konvertierung durchzuführen.

Beispiel Code:

ContextResolver:

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;
    }
}
Nach dem Login kopieren

Ressourcenklasse:

import java.time.LocalDate;

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

Person Klasse:

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

Durch die Implementierung dieses Ansatzes werden LocalDate-Objekte erstellt kann effektiv serialisiert und deserialisiert werden, was eine flexible JSON-Formatierung ermöglicht.

Das obige ist der detaillierte Inhalt vonWie formatiere ich Java 8 LocalDate-Objekte in JSON mit Jackson richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage