如何在 Java 中压缩 JSON 并在 Javascript 中解压缩 [关闭]

Posted

技术标签:

【中文标题】如何在 Java 中压缩 JSON 并在 Javascript 中解压缩 [关闭]【英文标题】:How to Compress JSON in java and decompression in Javascript [closed] 【发布时间】:2014-01-07 17:37:26 【问题描述】:

我有大量数据从服务器发送到 javascript,这需要很长时间才能加载。

我想知道如何在服务器上实现压缩并在 Javascript 中实现解压缩。我将不胜感激。

【问题讨论】:

看这里json.org/java,这里看developer.mozilla.org/en-US/docs/JSON 您的意思是编码/解码还是压缩/解压缩?我很困惑 尝试使用 gzip 压缩,因为大多数浏览器会默认处理。如果这还不够,我们需要知道您发送给 try 的数据类型,并帮助您进一步缩减这些数据。 您使用哪个网络服务器? 感谢您的快速响应,我的实际问题是我有大量 JSON 数据从 java 程序返回到 java 脚本。我想知道是否有任何方法可以减小 JSON 对象的大小。 Jboss5 是我的应用服务器 【参考方案1】:

要压缩您的字符串,您可以使用:

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

如果您在客户端使用 Ajax 进行数据采集,请参阅 Loading GZIP JSON file using AJAX。有必要将您的响应的标题设置为提到的@hgoebl

【讨论】:

抱歉,这不应该在您的代码中完成。 Webserver 或 Tomcat 或 ServletFilter 应该可以完成这项工作。 BTW 编码 GZIP 字节 ISO-8859-1 是完全错误的。 他提到任何应用服务器吗?他明确询问如何压缩某些内容,这就是答案中提供的内容。但是,您在 ISO 部分是完全正确的。我会将其编辑为 UTF-8。谢谢 这仍然是错误的方式,只是工作的一小部分。他将如何解压缩这个客户端?使用 GZIP JavaScript 库?这应该由 Webserver 或 Tomcat/Jersey/RESTeasy/... 以及客户端的 Web 浏览器透明地处理。 实际上我们可能都同意这样做的方法是渐进式加载 JSON 数据,而不是压缩。我怀疑他在加载后立即需要所有数据。但解压应该由浏览器自动处理。例如,据我所知,在从 Ajax 调用中接收到它之后,浏览器会在从接收到的数据中识别标题后正确显示内容所需的一切。还是我错了? 我同意第一部分。他不应该发送所有数据,而是使用某种分页或主从查找。但是您的压缩方式对浏览器是不可见的。他只会得到无法解析的垃圾。您必须设置 HTTP 标头,以便浏览器知道有效负载已压缩。

以上是关于如何在 Java 中压缩 JSON 并在 Javascript 中解压缩 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 Java 中压缩文件而不包含文件路径

在java中压缩和解压缩7z文件

如何在 Django 中压缩 JSON 请求?

如何在Android中压缩下载的图像并在需要时解压缩?

java 在java8中压缩

如何将所有选定的文件添加到一个文件夹中并在php中压缩