Heim >Java >javaLernprogramm >Wie kann ich das LocalDate von Java 8 mit Jackson ohne Anmerkungen formatieren?

Wie kann ich das LocalDate von Java 8 mit Jackson ohne Anmerkungen formatieren?

DDD
DDDOriginal
2024-12-11 01:43:10370Durchsuche

How Can I Format Java 8's LocalDate with Jackson Without Annotations?

LocalDate von Java 8 mit Jackson formatieren

Jacksons annotationsbasierte Formatierung für java.util.Date lässt sich nahtlos auf LocalDate-Felder in Java 8 übertragen. Um dies zu erreichen, vermeiden Sie die Verwendung von Annotationen und verwenden Sie stattdessen Jacksons ContextResolver in Verbindung mit dem JavaTimeModule.

ContextResolver:

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

Ressourcenklasse:

import java.time.LocalDate;

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

Testen:

Mit diesem Ansatz sollten Sie in der Lage sein, zu serialisieren und Deserialisieren Sie LocalDate-Werte als JSON-Strings im ISO-8601-Format.

Weitere Informationen finden Sie in der Dokumentation zum JSR310-Modul.

Hinweis:

Ab Jackson Version 2.7 ist das JSR310Module veraltet. Verwenden Sie stattdessen das JavaTimeModule.

Das obige ist der detaillierte Inhalt vonWie kann ich das LocalDate von Java 8 mit Jackson ohne Anmerkungen formatieren?. 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