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>
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>
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>
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!