Json 压缩小块数据
我有一个4KB的缓冲区,包含类似JSON格式的数据。我需要向其中添加更多的信息(比如说,增加3倍),但我必须适应这一小块内存。我曾考虑使用libZ压缩文本,但我担心它不会很好地执行,因为数据主要由一些独特的子字符串组成。在这种情况下,你有什么建议? 谢谢Json 压缩小块数据,json,compression,zlib,libz,text-compression,Json,Compression,Zlib,Libz,Text Compression,我有一个4KB的缓冲区,包含类似JSON格式的数据。我需要向其中添加更多的信息(比如说,增加3倍),但我必须适应这一小块内存。我曾考虑使用libZ压缩文本,但我担心它不会很好地执行,因为数据主要由一些独特的子字符串组成。在这种情况下,你有什么建议? 谢谢 Chris考虑一个固定字典,其中包含最多32K个您希望出现在数据中的字符串。您可以在两端(分别为数据的发送方和接收方)使用相同字典的deflateSetDictionary()和inflateSetDictionary()。这可能会让你得到你想
Chris考虑一个固定字典,其中包含最多32K个您希望出现在数据中的字符串。您可以在两端(分别为数据的发送方和接收方)使用相同字典的
deflateSetDictionary()
和inflateSetDictionary()
。这可能会让你得到你想要的压缩。如果没有字典,您不可能用如此少量的数据获得这种压缩。考虑一个包含32K字符串的固定字典,您希望这些字符串出现在数据中。您可以在两端(分别为数据的发送方和接收方)使用相同字典的deflateSetDictionary()
和inflateSetDictionary()
。这可能会让你得到你想要的压缩。如果没有字典,您不可能用如此少量的数据获得这种压缩。如果您真的想坚持压缩,使用利用数据特定结构的自定义字典的压缩算法将执行得最好。我用SharpZipLib实现了类似的东西
如果您想在缓冲区中存储更多的数据,并且不使用文本之类的数据进行压缩,那么考虑一个二进制协议,如谷歌的协议缓冲区。 更新
@Mark的回答概述了如何将自定义词典与zlib结合使用。如果您真的想坚持压缩,那么使用自定义词典并利用数据的特定结构的压缩算法将表现得最好。我用SharpZipLib实现了类似的东西
如果您想在缓冲区中存储更多的数据,并且不使用文本之类的数据进行压缩,那么考虑一个二进制协议,如谷歌的协议缓冲区。 更新
@Mark的回答概括了如何将自定义词典与zlib一起使用