2013-01-31 4 views
0

J'ai besoin d'écrire un client de repos (en Java - en utilisant RestEasy) qui peut consommer des réponses JSON. En ce qui concerne la nécessité pour le client de repos (ou service de wrapping) de traduire les réponses JSON en un type Java, je vois les options suivantes: 1. mappez la réponse à une chaîne, puis utilisez les outils JsonParser pour extraire manuellement les données et les types de construction.
2. Utilisez les POJO annotés JAXB - en conjonction avec jackson - pour lier automatiquement la réponse json à un objet. En ce qui concerne 2, est-il souhaitable/correct de définir un XSD pour générer les POJO annotés par JAXB? Je peux des avantages à faire cela en utilisant, par exemple. réutilisation par un client XML.Java Rest Client consommant JSON - comment créer des objets JAXB?

Merci.

Répondre

1

Je suis fan de # 2.

Le raisonnement est que votre modèle annoté JAXB essentiellement des objets sont le contrat pour la logique métier/domaine que vous essayez de représenter sur un niveau de transport, et POJO vous donnent évidemment un excellent contrôle de validation getter/setter, et vous pouvez contrôler vos noms d'éléments et espaces de noms avec une granularité fine. Cela dit, j'aime avoir un modèle "interne" supplémentaire de POJO (si nécessaire, en fonction de la complexité du problème/de la portée du projet) pour isoler la couche de transport des objets du domaine. De plus, vous avez l'impression que vous n'êtes pas directement lié à votre couche de transport si les choses doivent changer en interne dans votre représentation d'objet métier/domaine. Un collègue a mentionné Dozer, un outil pour la cartographie des haricots aux haricots, mais je n'ai aucune expérience directe avec elle pour commenter davantage. Je ne suis pas un fan de la génération de code à partir de XSDs. Souvent, le code est moche ou carrément illisible; et la gestion du changement, aussi subtile ou insignifiante puisse introduire des résultats inattendus. Peut-être que je me trompe à ce sujet mais j'ai besoin de bons tests unitaires sur un modèle éprouvé.

Ceci est basé sur mon expérience personnelle dans l'écriture d'un SDK orienté client avec une API XML-sur-HTTP (nous ne l'appelons pas REST). Les POJO annotés par JAXB/Jackson l'ont rendu relativement indolore. J'espère que cela pourra aider.