J'utilise jackson pour convertir un de mes objets en json. L'objet a 2 champs:
@Entity
public class City {
@id
Long id;
String name;
public String getName() { return name; }
public void setName(String name){ this.name = name; }
public Long getId() { return id; }
public void setName(Long id){ this.id = id; }
}
Puisque je veux l'utiliser avec la fonction de saisie semi-automatique de jQuery, je veux que «id» apparaisse comme «valeur» dans le json et «nom» pour apparaître comme «étiquette». La documentation de jackson n'est pas claire à ce sujet et j'ai essayé toutes les annotations qui, même à distance, semblent faire ce dont j'ai besoin, mais je ne parviens pas name
à apparaître label
et id
à apparaître comme value
dans le json.
Est-ce que quelqu'un sait comment faire cela ou si cela est possible?
Réponses:
Avez-vous essayé d'utiliser @JsonProperty?
la source
@JsonProperty(value="label")
et cela ne fonctionnait pas, je l'ai essayé comme vous l'avez suggéré et cela fonctionne! merci mec cela aidera vraiment à simplifier le code maintenant.Sachez qu'il y a
org.codehaus.jackson.annotate.JsonProperty
dans Jackson 1.x etcom.fasterxml.jackson.annotation.JsonProperty
dans Jackson 2.x. Vérifiez quel ObjectMapper vous utilisez (à partir de quelle version) et assurez-vous d'utiliser l'annotation appropriée.la source
org.json4s.jackson
espace de noms. :) et éventuellement une autre implémentation dejackson
YMMV.Il existe une autre option pour renommer le champ:
Jackson MixIns .
Utile si vous traitez avec des classes tierces, que vous ne pouvez pas annoter , ou si vous ne voulez tout simplement pas polluer la classe avec des annotations spécifiques à Jackson.
La documentation Jackson pour Mixins est obsolète, cet exemple peut donc apporter plus de clarté. En substance: vous créez une classe mixin qui effectue la sérialisation comme vous le souhaitez. Puis enregistrez-le dans l'ObjectMapper:
la source
Jackson
Si vous utilisez Jackson, vous pouvez utiliser l'
@JsonProperty
annotation pour personnaliser le nom d'une propriété JSON donnée.Par conséquent, il vous suffit d'annoter les champs d'entité avec l'
@JsonProperty
annotation et de fournir un nom de propriété JSON personnalisé, comme ceci:JavaEE ou JakartaEE JSON-B
JSON-B est la couche de liaison standard pour la conversion d'objets Java vers et depuis JSON. Si vous utilisez JSON-B, vous pouvez remplacer le nom de la propriété JSON via l'
@JsonbProperty
annotation:la source