11 Stimmen

Wie sendet man JSON mit JAVA zurück?

Ich habe Probleme Gzip-Kompression und JQuery zusammen verwenden . Es scheint, dass es durch die Art und Weise verursacht werden kann, die ich JSON-Antworten in meinen Struts-Aktionen sende. Ich verwende den folgenden Code, um meine JSON-Objekte zurück zu senden.

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);
        }                               
    }
 }

Gibt es eine bessere Möglichkeit, JSON in einer Java-Webanwendung zu senden?

1 Stimmen

Ich habe response.setContentType("application/json;charset=UTF-8"); anstelle von response.setContentType("text/x-json;charset=UTF-8") verwendet;

15voto

Prabhu R Punkte 13138

Anstelle von

try {
       response.getWriter().write(json.toString());
} catch (IOException e) {
       throw new ApplicationException("IOException in populateWithJSON", e);
}        

Versuchen Sie dies

try {
        json.write(response.getWriter());
} catch (IOException e) {
        throw new ApplicationException("IOException in populateWithJSON", e);
}                                      

weil dadurch die Erstellung einer Zeichenkette vermieden wird und das JSONObject die Bytes direkt in das Writer-Objekt schreibt

5voto

daanish.rumani Punkte 317

In unserem Projekt machen wir so ziemlich das Gleiche, nur dass wir application/json als Inhaltstyp verwenden.

Wikipedia sagt, dass die Der offizielle Internet-Medientyp für JSON ist application/json .

1voto

StaxMan Punkte 107669

Ich persönlich denke, dass die Verwendung von JAX-RS der beste Weg ist, um mit Datenbindung umzugehen, sei es XML oder JSON. Jersey ist eine gute JAX-RS-Implementierung (RestEasy ist auch gut) und bietet gute Unterstützung. Auf diese Weise können Sie echte Objekte verwenden, keine Notwendigkeit, Json.org Libs proprietäre Klassen zu verwenden.

0voto

luoruofeng Punkte 1

Response.getWriter(). schreiben. (json.toString());

ändern in: response.getWriter(). drucken (json.toString());

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X