java - Java 和 C 之间的压缩兼容性

标签 java c json compression zlib

我遇到一种情况,我的 java 桌面客户端软件使用 JSON 与用 C 编写的遗留后端系统(服务器上有一个转换器)进行通信,当批量部署在字段。

在研究了压缩选项之后,我得出的结论是流行的 JSON 压缩工具不适合我的情况。它们似乎是基于通过网络传递数据库查询结果的场景,这不是我的情况。没有方便的行/列算法可以轻松压缩。我们的数据更复杂。

因此,我们开始使用压缩、Java 的 DeflaterOutputStream 和 InflaterInputStream(或者可能是它们的 GZIP 和/或 ZIP 风格)。在 C 端,会有类似的东西,可能是 zlib 库,可以通过 RedHat 获得,我们的服务器运行在 RedHat 上。

在我陷入困境之前,有经验的人可以告诉我zlib压缩和Java支持的压缩有多兼容吗? Java 压缩选项中的一种或另一种是否比另一种更好?比另一个更快?

顺便说一句,该协议(protocol)是双向的。服务器和客户端都使用 JSON 来编码消息,因此在我的场景中双方都需要能够压缩和解压缩。 提前致谢。

最佳答案

Java 中的 Deflator、GZIP 和 ZIP 库都使用 zlib 库进行实际压缩,因此它们应该完全相同,而不仅仅是兼容。最有可能的是 GZIP 和 ZIP 更便携,因为 Deflator 只是具有较小页眉/页脚的压缩数据

关于java - Java 和 C 之间的压缩兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623302/

相关文章:

java - 排序数组并反射(reflect)另一个数组中的变化

java - 将年份和日期(例如 2013216 = 2013 年的第 216 天)转换为 Java 中的完整日期

c - 使指针指向数组的末尾

c - 将一维数组视为二维数组进行排序

c++ - 解析 2D QVariantMap

java - 有什么方法可以查看网站上的隐藏内容或隐藏的云端链接?

java - 如何将 JTextField 设置为选中组件

c - 尽管我 malloc 正确,但指针段错误

ios - 为什么 JSON 解析器没有捕获未经验证的数据?

java - 将 avro 生成的对象序列化为 json 时出现 JsonMappingException