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
Mary-Kate OlsenOriginal
2024-12-30 01:54:08338Durchsuche

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;
    }
}

Ressourcenklasse:

import java.time.LocalDate;

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

Person Klasse:

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

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!

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