2013-12-19 292 views
7

大量のデータをサーバーからJavascriptに送信していますが、ロードにかなりの時間がかかります。JavaでJSONを圧縮する方法とJavascriptで解凍する

私はサーバーでの圧縮とJavascriptでの圧縮をどのように実装できるのだろうかと思っていました。助けていただければ幸いです。あなたが使用することができ、あなたの文字列を圧縮する

+0

ここをクリックhttp://json.org/java/ https://developer.mozilla.org/en-US/docs/JSON – elclanrs

+3

エンコード/デコードを意味しましたか、圧縮/解凍を意味しましたか?私は混乱しています –

+3

gzip圧縮を試してみてください。ほとんどのブラウザはデフォルトでこれを処理します。それだけでは不十分な場合は、試しに*送信するデータの種類を知り、このデータをさらに縮小するのを手助けする必要があります。 – GitaarLAB

答えて

7

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は

ほとんどのブラウザは、手動解凍を必要とせずにgzipで圧縮されたコンテンツを扱うことができるはずjava.util.zipからです。

ドキュメント:GZIPOutputStream

あなたは、クライアント側でのデータ取得のためのAjaxを使用している場合Loading GZIP JSON file using AJAXを参照してください。応答のヘッダーは、@hgoeblと設定する必要があります。

+0

申し訳ありませんが、これはあなたのコードで行うべきではありません。 WebサーバーまたはTomcatまたはServletFilterがその作業を行う必要があります。 GZIPバイトISO-8859-1をエンコードするBTWは単に間違っています。 – hgoebl

+0

彼はアプリケーションサーバーについて言及していますか?彼は明示的にいくつかのコンテンツを圧縮する方法を尋ねました。これが答えに提供されたものです。しかし、あなたは完全にISOの部分にしています。私はUTF-8に編集します。ありがとう – Dropout

+0

それはまだ間違った方法であり、仕事のごく一部です。どのように彼はこのクライアント側を圧縮解除しますか? GZIP JavaScriptライブラリを使用しますか?これは、WebサーバーまたはTomcat/Jersey/RESTeasy/...およびクライアント側のWebブラウザによって透過的に処理される必要があります。 – hgoebl

関連する問題