Maison > Java > javaDidacticiel > Comment personnaliser les noms de propriétés JSON pour différentes sérialisations et désérialisations à l'aide de Jackson ?

Comment personnaliser les noms de propriétés JSON pour différentes sérialisations et désérialisations à l'aide de Jackson ?

Patricia Arquette
Libérer: 2024-10-27 06:56:03
original
836 Les gens l'ont consulté

How to Customize JSON Property Names for Different Serialization and Deserialization Using Jackson?

Personnalisation des noms de propriétés JSON lors de la sérialisation et de la désérialisation

Dans la programmation orientée objet, il est souvent souhaitable de manipuler les champs de classe privée via des getters de méthode et les setters tout en représentant les données dans un format cohérent pendant la sérialisation et la désérialisation. L'approche basée sur les annotations de la bibliothèque Jackson nous permet d'y parvenir en attribuant différents noms à une seule propriété.

Considérons une classe « Coordonnées » avec un champ entier nommé « rouge ». Nous souhaitons sérialiser les objets JSON en utilisant le nom de propriété "r" tout en les désérialisant en utilisant le nom "red".

Pour implémenter cela, nous pouvons utiliser l'annotation @JsonProperty sur les méthodes getter et setter avec des valeurs différentes. Cependant, cette approche a entraîné une exception :

<code class="json">org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "red"</code>
Copier après la connexion

Le problème se pose car Jackson attribue le même nom de champ aux méthodes getter et setter. Pour résoudre ce problème, nous devons utiliser différents noms de méthodes pour getter et setter :

<code class="java">public class Coordinates {
    byte red;

    @JsonProperty("r")
    public byte getR() {
      return red;
    }

    @JsonProperty("red")
    public void setRed(byte red) {
      this.red = red;
    }
}</code>
Copier après la connexion

Cette approche sérialise avec succès l'objet avec le nom de propriété "r" et le désérialise en utilisant le nom "red".

<code class="json">Serialization: {"r":5}
Deserialization: 25</code>
Copier après la connexion

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