Maison > Java > javaDidacticiel > Comment obtenir différents noms de propriété pour la sérialisation et la désérialisation avec Jackson ?

Comment obtenir différents noms de propriété pour la sérialisation et la désérialisation avec Jackson ?

Linda Hamilton
Libérer: 2024-10-26 05:52:30
original
568 Les gens l'ont consulté

How to Achieve Different Property Names for Serialization and Deserialization with Jackson?

Sérialisation/désérialisation JSON avec différents noms de propriété

La bibliothèque Jackson offre la flexibilité de spécifier différents noms pour une propriété lors de la sérialisation et de la désérialisation. Considérons le scénario suivant :

Vous disposez d'une classe nommée "Coordonnées" avec un champ "rouge". Lors de la désérialisation à partir de JSON, vous souhaitez que ce champ soit mappé au nom de propriété « rouge ». Cependant, lors de la sérialisation, vous souhaitez que le nom de la propriété soit "r".

Solution

Pour y parvenir, vous pouvez utiliser l'annotation @JsonProperty avec différentes méthodes noms pour le getter et le setter :

public class Coordinates {
    private int red;

    @JsonProperty("r")
    public int getRed() {
        return red;
    }

    @JsonProperty("red")
    public void setRed(int red) {
        this.red = red;
    }
}
Copier après la connexion

En utilisant différents noms de méthodes pour le getter et le setter, Jackson les reconnaît comme des propriétés distinctes. Lors de la désérialisation, il mappe la propriété JSON « red » au setter avec l'annotation @JsonProperty("red"). Lors de la sérialisation, il utilise le getter avec l'annotation @JsonProperty("r") pour récupérer la valeur et la sérialiser en tant que propriété "r".

Exemple

Pour illustrer ce comportement, considérons le code de test suivant :

Coordinates c = new Coordinates();
c.setRed(5);

ObjectMapper mapper = new ObjectMapper();
System.out.println("Serialization: " + mapper.writeValueAsString(c));

Coordinates r = mapper.readValue("{\"red\":25}", Coordinates.class);
System.out.println("Deserialization: " + r.getRed());
Copier après la connexion

Sortie :

Serialization: {"r":5}
Deserialization: 25
Copier après la connexion

Comme vous pouvez le voir, le nom de propriété "red" est utilisé lors de la désérialisation, tandis que le nom de propriété "r" est utilisé lors de la sérialisation.

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