8
votes

Pourquoi les noms sont-ils retournés avec @ à Json à l'aide de Jersey

J'utilise le Jaxb qui fait partie du Jersey Jax-Rs. Lorsque je demande à JSON pour mon type de sortie, tous mes noms d'attribut commencent par un astérisque comme celui-ci,

Cet objet; p> xxx pré>

devient ceci, P>

   {"ResponseDetails":{"@transactionDate":"07-12-2010",  
             "@statusMessage":"Successful","@returnCode":"0"}


0 commentaires

3 Réponses :


9
votes

Toutes les propriétés mappées avec @xmlattribute seront préfixées avec '@' dans JSON. Si vous souhaitez supprimer, il a simplement annoté votre propriété avec @XMLElement.

Vraisemblablement, c'est pour éviter les conflits de nom potentiels: P>

@XmlAttribute(name="foo") public String prop1;  // maps to @foo in JSON
@XmlElement(name="foo") public String prop2;  // maps to foo in JSON


1 commentaires

Ça ne fonctionne pas pour moi! Avec @xmlattribute I Obtenir @ avant les champs et avec @xmlelement Je n'obtiens pas de sortie!



1
votes

Si vous maîtrisez à la fois sur XML et JSON, et vous n'en avez pas besoin en tant qu'attribut dans la version XML, la suggestion d'utiliser @XMLElement est la meilleure façon d'aller.

Cependant, si elle doit être Un attribut (plutôt qu'un élément) dans la version XML, vous avez une alternative assez facile.

Vous pouvez facilement configurer un jsonconfiguration qui désactive l'insertion du "@ ". = "http://jersey.java.net/nonav/documentation/latest/json.html" rel = "nofollow"> http://jersey.java.net/nonav/documentation/latest/json.html


1 commentaires

Le lien est cassé. et j'ai vérifié la dernière documentation en Jersey et il n'y a rien à propos de jsonconfiguration dedans!



0
votes

Vous devez définir json_attribute_prefix code> dans votre jaxbcontext code> configuration sur "" code> qui par défaut est "@" code> " :

properties.put(JAXBContextProperties.JSON_ATTRIBUTE_PREFIX, ""); 


0 commentaires