Dans Jackson, il est possible d'avoir des noms différents pour une propriété lors de la sérialisation et de la désérialisation. Prenons un exemple avec la classe Coordonnées suivante :
<code class="java">class Coordinates { int red; }</code>
Nous voulons le format JSON suivant pour la désérialisation :
<code class="json">{ "red": 12 }</code>
Cependant, pour la sérialisation, nous avons besoin du format suivant :
<code class="json">{ "r": 12 }</code>
Solution :
La solution réside dans l'utilisation de l'annotation @JsonProperty sur les méthodes getter et setter, en s'assurant qu'elles portent des noms différents :
<code class="java">class Coordinates { int red; @JsonProperty("r") public byte getRed() { return red; } @JsonProperty("red") public void setRed(byte red) { this.red = red; } }</code>
Notez que les noms de méthodes doivent être différents. Jackson les interprète comme des références à différentes propriétés, plutôt que comme la même propriété avec des noms différents.
Notes supplémentaires :
Code de test :
<code class="java">Coordinates c = new Coordinates(); c.setRed((byte) 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.getR());</code>
Sortie :
Serialization: {"r":5} Deserialization: 25
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!