Heim > Java > javaLernprogramm > Wie serialisiere und deserialisiere ich LocalDate mit Jackson in Java?

Wie serialisiere und deserialisiere ich LocalDate mit Jackson in Java?

DDD
Freigeben: 2024-12-18 15:18:10
Original
298 Leute haben es durchsucht

How to Serialize and Deserialize LocalDate with Jackson in Java?

LocalDate-Serialisierung mit Jackson

Bei der Arbeit mit dem LocalDate-Feld und der JSON-Serialisierung von Java 8 reichen die standardmäßigen Java 8-Anmerkungen möglicherweise nicht immer aus. Um dieses Problem zu beheben, wird eine benutzerdefinierte Lösung vorgestellt, die Jacksons Module und einen ContextResolver verwendet.

Jackson stellt das JSR310Module (jetzt ersetzt durch JavaTimeModule) bereit, um die Serialisierung und Deserialisierung von Java 8-Datums- und Zeittypen zu handhaben. Um es zu nutzen, befolgen Sie diese Schritte:

  1. Fügen Sie die Abhängigkeit zu Ihrem Projekt hinzu:

    <dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-jsr310</artifactId>
        <version>2.4.0</version>
    </dependency>
    Nach dem Login kopieren
  2. Erstellen Sie einen ContextResolver, um den ObjectMapper zu konfigurieren Umgang mit LocalDate und anderen Java 8-Datums- und Uhrzeitangaben Typen:

    @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;
        }
    
    }
    Nach dem Login kopieren
  3. Verwenden Sie den ContextResolver in Ihrer Ressourcenklasse, um den ObjectMapper für Ihre Endpunkte anzupassen:

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

Mit diesem Ansatz , LocalDate-Felder werden ordnungsgemäß serialisiert und deserialisiert, wenn Jackson für die JSON-Verarbeitung verwendet wird. Die Lösung berücksichtigt auch die Anforderung, die Serialisierung von Datumsangaben als Zeitstempel zu verhindern, indem „write-date-as-timestamp“ auf „false“ gesetzt wird.

Hinweis: Das JSR310Module ist in Jackson-Versionen 2.7 und höher veraltet . Es wird empfohlen, stattdessen JavaTimeModule zu verwenden, das Teil derselben Abhängigkeit ist.

Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich LocalDate mit Jackson in Java?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage