Comment renvoyer JSON avec JAVA?
Je vais avoir des problèmes en utilisant la compression Gzip et JQuery ensemble. Il semble que cela peut être causé par la façon dont je suis l'envoi de réponses JSON dans mes jambes de suspension des Actions. J'utilise le code suivant pour envoyer mes objets JSON en arrière.
public ActionForward get(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
JSONObject json = //Do some logic here
RequestUtils.populateWithJSON(response, json);
return null;
}
public static void populateWithJSON(HttpServletResponse response,JSONObject json) {
if(json!=null) {
response.setContentType("text/x-json;charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
try {
response.getWriter().write(json.toString());
} catch (IOException e) {
throw new ApplicationException("IOException in populateWithJSON", e);
}
}
}
Est-il un meilleur moyen d'envoyer JSON dans une application web Java?
source d'informationauteur Sergio del Amo
Vous devez vous connecter pour publier un commentaire.
Au lieu de
essayer cette
parce que cela permettra d'éviter la création d'une chaîne de caractères et la JSONObject va écrire directement les octets de l'objet Writer
Dans notre projet, nous faisons à peu près la même, sauf que nous utilisons application/json comme le type de contenu.
Wikipédia dit que le Internet officiel type de support de JSON est application/json.
Personnellement, je pense que l'aide de JAX-RS est la meilleure façon de traiter avec la liaison de données, XML ou JSON. Jersey est une bonne JAX-RS de mise en œuvre (RestEasy est trop bonne), et a un bon soutien. De cette façon, vous pouvez utiliser des objets réels, pas besoin d'utiliser Json.org libs propriétaire classes.
réponse.getWriter().écrire(json.toString());
changement:
réponse.getWriter().imprimer(json.toString());