Obtenir simple Paramètre JSON à partir d'un JSON demande à JAX-RS
Le client/navigateur fait une JSON demande à mon repos des ressources (le type de contenu de la demande est application/json
et le RESTE de la méthode est @Consumes("application/json")
annoté).
@Path("/process-something")
@POST
@Produces("application/json")
@Consumes("application/json")
@HandleDefaultExceptions
public AResponse processSomething(List<Long>) {
}
Le JSON corps se compose de quelques types simples, comme List<Long>
ou String
.
Est-il un simple possibilité d'obtenir JSON paramètres injecté juste l'annotation en quelque sorte, semblable à @FormParam
dans le cas d'un application/x-www-form-urlencoded
demande?
J'aimerais que certains d'autres solutions plus simples que le décodage de la Chaîne JSON avec Jackson ObjectMapper
ou de Largage de JSONObject
.
quel cadre utilisez-vous pour jaxrs mise en œuvre ?, il y a beaucoup de cadres qui fournissent support JSON bien que seule l'annotation n'est pas suffisant, vous aurez à la carte les fournisseurs appropriés, mais c'est pas une grosse affaire. Consultez Jersey, Apache CXF
Jersey est ce que j'utilise. J'espère que par la Cartographie de vous ne signifie pas la création d'ObjectMapper ou d'autres instances d'objets (voir la dernière partie de la question) ...
non, je veux dire que vous devrez fournir une entrée, soit dans web.xml ou tout autre fichier de config qui va dire jersey à utiliser support json. voir ceci : jersey.java.net/documentation/latest/media.html#json - Et ils sont les plus faciles des solutions !
Tu veux dire en fait une solution comme celle fournie dans la réponse de la TheArchitect?
oui, en plus je pense que vous aurez à donner des pojo-support json sorte d'entrée dans votre fichier de config aussi. Veuillez consulter le lien donné ci-dessus.
Jersey est ce que j'utilise. J'espère que par la Cartographie de vous ne signifie pas la création d'ObjectMapper ou d'autres instances d'objets (voir la dernière partie de la question) ...
non, je veux dire que vous devrez fournir une entrée, soit dans web.xml ou tout autre fichier de config qui va dire jersey à utiliser support json. voir ceci : jersey.java.net/documentation/latest/media.html#json - Et ils sont les plus faciles des solutions !
Tu veux dire en fait une solution comme celle fournie dans la réponse de la TheArchitect?
oui, en plus je pense que vous aurez à donner des pojo-support json sorte d'entrée dans votre fichier de config aussi. Veuillez consulter le lien donné ci-dessus.
OriginalL'auteur Andrei I | 2013-07-31
Vous devez vous connecter pour publier un commentaire.
Vous pouvez créer une classe Java qui reflète le modèle de données de votre objet JSON et l'annoter avec JAXB @XmlRootElement. Vous pouvez mapper les attributs personnalisés pour le JSON nom de la clé avec @XmlElement annotations, par ex.:
Alors Jersey peut décoder l'objet JSON pour vous de manière transparente et le tour est joué!
OriginalL'auteur TheArchitect
Selon cette documentation il y a 6 paramètre basé sur les annotations utilisées pour extraire des paramètres à partir d'une demande, et personne ne semble être en JSON paramètres.
Parce que cela pourrait être la réponse... au moins il n'y a pas d'annotations JAX-RS standard qui extrait le paramètre JSON.
juste que pensez-vous @Consomme("application/json")?
L'annotation dit que la méthode annotée traite UNIQUEMENT les demandes avec Content-Type: application/json dans l'en-tête. Ai-je raté quelque chose?
cette annotation indique le cadre de convertir en json dans un pojo ou raw JSONObject suffit de passer par le lien que j'ai fournis ci-dessus et les choses devraient commencer à travailler pour vous.
OriginalL'auteur Andrei I