2013-12-19 147 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是java.util.zip

大多數瀏覽器應該能夠處理gzip壓縮的內容,而不需要手動解壓。

文檔:GZIPOutputStream

Loading GZIP JSON file using AJAX如果你使用Ajax對客戶端進行數據採集。有必要設置您的迴應標題爲@hgoebl提到。

+0

很抱歉,這不應該在您的代碼中完成。 Webserver或Tomcat或ServletFilter應該完成這項工作。 BTW編碼GZIP字節ISO-8859-1簡直是錯誤的。 – hgoebl

+0

他提及任何應用程序服務器嗎?他明確地問過如何壓縮一些內容,這就是答案中提供的內容。然而,你完全正確的ISO部分。我將它編輯爲UTF-8。謝謝 – Dropout

+0

它仍然是錯誤的方式,只有很小的一部分工作。他如何解壓這個客戶端?使用GZIP JavaScript庫?這應該通過Webserver或Tomcat/Jersey/RESTeasy/...和客戶端的Web瀏覽器進行透明處理。 – hgoebl