JSONC将JSON数据压缩到80%(例子)

・3 分钟阅读

https://github.com/tcorral/JSONC

JSONC

更新到版本1.0.0

Build Status

变更日志

背景

使用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%
方玉 profile image