2013-12-19 3 views
7

Ich habe eine große Menge von Daten vom Server an Javascript gesendet, die ziemlich lange dauert zu laden.Wie komprimiere ich JSON in Java und Dekomprimierung in Javascript

Ich frage mich, wie ich die Komprimierung bei Server und Dekomprimierung in Javascript implementieren kann. Ich würde jede Hilfe schätzen.

+0

Siehe hier http://json.org/java/, und hier https://developer.mozilla.org/en-US/docs/JSON – elclanrs

+3

Meinten Sie codieren/dekodieren oder Sie meinten, komprimieren/dekomprimieren? Ich bin verwirrt –

+3

versuchen Sie mit Gzip-Komprimierung, wie die meisten Browser werden das standardmäßig behandeln. Wenn das nicht genug ist, müssen wir wissen, welche Art von Daten Sie an * try * senden und Ihnen dabei helfen, diese Daten weiter zu verkleinern. – GitaarLAB

Antwort

7

Ihren String So komprimieren Sie verwenden können:

public static String compress(String str) throws IOException { 
    if (str == null || str.length() == 0) { 
     return str; 
    } 
    ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    GZIPOutputStream gzip = new GZIPOutputStream(out); 
    gzip.write(str.getBytes()); 
    gzip.close(); 
    String outStr = out.toString("UTF-8"); 
    return outStr; 
} 

GZIPOutputStream ist von java.util.zip

Die meisten Browser in der Lage sein sollten gzip komprimierte Inhalte ohne die Notwendigkeit von manueller Dekompression zu behandeln.

Docs: GZIPOutputStream

Siehe Loading GZIP JSON file using AJAX, wenn Sie Ajax für die Datenerfassung auf der Client-Seite verwenden. Es ist notwendig, die Header für Ihre Antwort als @hgoebl erwähnt.

+0

Sorry, aber das sollte nicht in Ihrem Code getan werden. Webserver oder Tomcat oder ein ServletFilter sollte die Aufgabe erledigen. BTW Codierung der GZIP Bytes ISO-8859-1 ist einfach falsch. – hgoebl

+0

Erwähnt er einen Anwendungsserver? Er fragte explizit, wie man einige Inhalte komprimieren könne, und das wurde in der Antwort angegeben. Sie sind jedoch völlig richtig im ISO-Teil. Ich werde es in UTF-8 bearbeiten. Danke – Dropout

+0

Es ist immer noch der falsche Weg und nur der sehr kleine Teil der Arbeit. Wie würde er diese Client-Seite entpacken? Verwenden Sie eine GZIP-JavaScript-Bibliothek? Dies sollte transparent von Webserver oder Tomcat/Jersey/RESeasy/... und Web-Browser auf Client-Seite gehandhabt werden. – hgoebl

Verwandte Themen