7
votes

Comment ajouter et ignorer un champ pour la réponse JSON

J'utilise Resease et Hibernate pour revenir à la réponse à Jackson. J'ai un joueur de haricot ayant des champs: nom, id, âge, position.

Maintenant, je mettez en place deux Obtenez Méthodes de repos pour la rétention JSON.

  1. getplayer () , qui renvoie un lecteur: nom, identifiant, âge, position.

  2. getplayers () , qui renvoie une liste des joueurs, mais avec cette liste de joueurs, je ne veux pas retourner position.

    Je veux dire, comment puis-je ajouter un champ pour une réponse et l'ignorer pour une autre réponse.

    S'il vous plaît suggérer.

    merci


0 commentaires

3 Réponses :


18
votes

Vous devez utiliser @jsonignore Annotation sur le pojo getter.

http: //jackson.codehaus. Org / 1.0.1 / Javadoc / Org / Codehaus / Jackson / Annotate / JSONIGNORE.HTML

mise à jour:

Vous devez utiliser une interface avec @jsonignoreproperties et le définir comme @jsonfilter sur votre mappage de demande.

Vous pouvez en savoir plus ici: http://www.jroller.com/rickhigh/entry/filtering_json_feeds_from_spring


3 commentaires

que je sais, mais je veux le même champ d'ignorer pour une réponse et un même champ à ajouter pour un autre


Comme indiqué dans le lien ... Je dois faire une interface Appdetailfilter () et utiliser @jsonfilter avec la demande. Mais je ne reçois pas ce qui devrait être en interface et comment l'utiliser pour ignorer différents champs pour une demande différente.


Ceci est juste une sorte d'interface marqueur qui n'a pas de méthodes. Vous pouvez configurer peu d'interfaces. Et puis vous mappez chaque demande avec cette interface.



-8
votes

Vous ne pouvez pas simplement sortir le champ de position? XXX


5 commentaires

Cela vous ouvre jusqu'à l'introduction d'un bogue si vous oubliez d'écrire le code à NULL out le champ. Utilisez @jsonignore de sorte que vous n'êtes pas obligé.


Comment cela résoudra-t-il l'exigence de l'OP "Comment puis-je ajouter un champ pour une réponse et l'ignorer pour une autre réponse". ? En outre, "oublier" de faire des choses lorsque vous codez toujours des bugs;)


Cela me semble la solution la plus simple, ainsi que d'ajouter @jsonignore à des propriétés qui doivent toujours être ignorées. Eiden, avez-vous trouvé une autre façon de le faire? Je n'aime pas la façon dont Jsonview et Jsonfilter peuvent être utilisés pour obtenir le même résultat.


Est-ce que ça marche? Parce que je pense que cela aussi, et j'ai fait mes enregistrements inutiles nuls avant de l'envoyer au ObjectMapper pour le convertir en JSON. MAPPER donne une erreur de pointeur NULL. Je pense qu'il s'agit de sous-champs de "produit" que j'ai défini null. Y a-t-il une solution pour cela?


Bien sûr, cela est plus une solution de contournement qu'une réponse, mais comme une solution rapide et sale, elle fonctionne au cas où l'annotation JSonfore n'est pas disponible pour une autre raison (si vous avez compilé Pojo, par exemple).



1
votes

J'utilise Tomée, pour ignorer un champ dans la réponse JSON transitoire fonctionne pour moi, mais je ne sais pas si c'est la bonne façon d'aller (il n'y a pas de jackson visible à mon application , je viens d'inclure une API JeE-web):

servlet xxx

objet xxx

réponse xxx


1 commentaires

Cette approche peut introduire des problèmes lors de l'utilisation de la persistance, je n'irais pas ainsi. D'autre part, si vous utilisez cet objet juste pour le transfert de données, cela devrait être bien.