Maison > Java > javaDidacticiel > Comment formater correctement les objets Java 8 LocalDate en JSON à l'aide de Jackson ?

Comment formater correctement les objets Java 8 LocalDate en JSON à l'aide de Jackson ?

Mary-Kate Olsen
Libérer: 2024-12-30 01:54:08
original
338 Les gens l'ont consulté

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

Formatage de Java 8 LocalDate avec Jackson

Problème :

Dans les applications Java, conversion de Date les objets au format JSON avec des modèles de date spécifiques peuvent être simples à l'aide de l'annotation @JsonFormat. Cependant, lorsqu'il s'agit de java.time.LocalDate introduit dans Java 8, la même approche peut ne pas fonctionner comme prévu.

Solution proposée :

Pour personnaliser le formatage de Objets LocalDate pour la sérialisation JSON, l'approche suivante peut être utilisée :

  1. Configurer Jackson ObjectMapper :
  2. Créez une implémentation de ContextResolver pour ObjectMapper.
  3. Enregistrez le JavaTimeModule dans ObjectMapper pour prendre en charge la sérialisation LocalDate.
  4. Activez la fonctionnalité WRITE_DATES_AS_TIMESTAMPS sur false, comme LocalDate. représente les dates sans horodatages.
  5. Utilisez ContextResolver dans l'application JAX-RS :
  6. Définissez une classe de service JAX-RS avec l'annotation @Provider.
  7. Implémentez l'interface ObjectMapperContextResolver pour fournir l'ObjectMapper configuré.
  8. Annoter la ressource Classe pour la conversion JSON :
  9. Ajoutez les annotations @JsonDeserialize et @JsonSerialize avec les classes de désérialiseur et de sérialiseur appropriées pour gérer la conversion LocalDate.

Exemple 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;
    }
}
Copier après la connexion

Classe de ressources :

import java.time.LocalDate;

@Path("person")
public class LocalDateResource {
    @GET
    public Person getPerson() {
        return new Person(LocalDate.now());
    }
}
Copier après la connexion

Personne Classe :

public class Person {
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate birthDate;
}
Copier après la connexion

En mettant en œuvre cette approche, LocalDate les objets peuvent être sérialisés et désérialisés efficacement, permettant un formatage JSON flexible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal