JSONC将JSON数据压缩到80%(例子)
方玉
・3 分钟阅读
https://github.com/tcorral/JSONC
JSONC
更新到版本1.0.0
背景
使用Javascript开发富Internet应用程序(RIA)的问题之一是传输的数据量
浏览器到服务器。
JSONC有两种不同的方法来减少要传输的数据量:
- JSONC.compress -使用映射压缩JSON对象,以减少JSON对象中键的大小,
- 要小心这个方法,因为如果使用一个包含大量数据的JSON,那么它非常令人印象深刻,如果使用少量数据压缩JSON对象,可能会很糟糕,因为,它会增大。
- 根据数据的类型和值,速率压缩可能是7.5 %到32.81 %的变量,
- JSONC.pack使用LZW压缩算法压缩JSON对象以便让JSONC使用 。来自@pieroxy的lz字符串库https://github.com/pieroxy/lz-string/
- 即使没有使用JSONC压缩这些对象也可以使用pack压缩任何JSON对象,有关详细信息,请参阅用法,
用法
压缩一个JSON对象:
// Returns a JSON object but compressed.
var compressedJSON = JSONC.compress( json );
解压一个JSON对象:
// Returns the original JSON object.
var json = JSONC.decompress( compressedJSON );
将普通JSON对象压缩为一个LZW字符串:
// Returns the LZW representation as string of the JSON object.
var lzwString = JSONC.pack( json );
使用JSONC将JSON对象压缩为LZW字符串后
// Returns the LZW representation as string of the JSON object.
var lzwString = JSONC.pack( json, true );
从一个LZW字符串中解压缩一个普通JSON对象:
// Returns the original JSON object.
var json = JSONC.unpack( lzwString );
使用JSONC从LZW字符串中解压缩JSON压缩对象:
// Returns the original JSON object.
var json = JSONC.unpack( lzwString, true );
压缩例子
例子data.js ,
Original - 17331 bytes
Compressed using JSONC - 16025 bytes
Compression rate - 7.5%
Original compressed using lz-string - 3822 bytes
Compressed using JSONC using lz-string - 3689 bytes
Compression rate - 3.4%
Compression rate from original to compressed using JSONC and lz-string - 78.71%
例子data2.js ,
Original - 19031 bytes
Compressed using JSONC - 12787 bytes
Compression rate - 32.81%
Original compressed using lz-string - 3900 bytes
Compressed using JSONC using lz-string - 3113 bytes
Compression rate - 20.18%
Compression rate from original to compressed using JSONC and lz-string - 83.64%