我将 Json 消息发送到服务,该服务将这些消息重新发布给我们的用户。问题是我的一些消息大于允许的消息大小的最大限制,所以我想知道是否可以对我的消息应用任何类型的压缩,然后在客户端解压缩它们。
首先我在 C# 中尝试了 Gzip,但使用 JavaScript 解压缩似乎很难。
其他一些声音告诉尝试 LZMA 和 Zlip。
我是在正确的道路上,还是我应该以不同的方式思考。
我将 Json 消息发送到服务,该服务将这些消息重新发布给我们的用户。问题是我的一些消息大于允许的消息大小的最大限制,所以我想知道是否可以对我的消息应用任何类型的压缩,然后在客户端解压缩它们。
首先我在 C# 中尝试了 Gzip,但使用 JavaScript 解压缩似乎很难。
其他一些声音告诉尝试 LZMA 和 Zlip。
我是在正确的道路上,还是我应该以不同的方式思考。
我找到了一个解决方案,它成功地使用“C# 和 PHP”解压缩压缩文本。Zlib 用于压缩。
我从 JSXCompressor 得到解决方案,你可以下载这个例子:http: //jsxgraph.uni-bayreuth.de/distrib/jsxcompressor.zip 见 testhelloworld.php
在 PHP 中,使用 gzcompress 完成压缩,然后使用 base64_encode 对压缩输出进行编码。
$x = 'Some text or json';
$compressed = base64_encode(gzcompress($x, 9)); // 9 could be from 1 to 9
// echo $compressed;
file_put_contents('compressed.txt', $compressed);
解压:
$.ajax('compressed.txt').done(function (res) {
console.info(JXG.decompress(res));
});
可能会使用 BSON,它是 JSON 数据的二进制编码。
在客户端,有一些用于编码/解码的库。Mongo DB自带一个:https ://github.com/mongodb/js-bson
在服务器端 JSON.net 支持 BSON 序列化/反序列化:http: //james.newtonking.com/archive/2009/12/26/json-net-3-5-release-6-binary-json-bson-support
这不完全是压缩。只是 JSON 数据的更紧凑的表示。