您的位置:首页 > Web前端 > JavaScript

JSON的压缩方法

2014-02-10 11:08 561 查看

节省流量,Andriod中必备啊

JSON 的压缩算法, 目前有 CJSON 和 HPack 两种, 都是透过结构的改变, 来将容量压小, 所以 Client 端写法还是得要改写. (不同于 gzip 等压缩算法)

HPack 与 CJSON 的 Source code
CJSON: 下载 (备份)
HPack: WebReflection/json.hpack - GitHub
CJSON Compress Algorithm
CJSON 的算法可见此篇: Compress your JSON with automatic type extraction
原理: CJSON 的压缩算法, 主要是将资料抽离成 Template 与 Value, 节省掉重复的 "Key 值".
原始 JSON
[    { // This is a point      "x": 100,      "y": 100    }, { // This is a rectangle      "x": 100,      "y": 100,      "width": 200,      "height": 150    },    {}, // an empty object  ]

使用 CJSON 压缩的 JSON
{    "templates": [      [0, "x", "y"], [1, "width", "height"]    ],    "values": [      { "values": [ 1,  100, 100 ] },      { "values": [2, 100, 100, 200, 150 ] },      {}    ]  }

HPack Compress Algorithm
HPack 的算法可见此篇: Web Resource Optimization: JSON Compression algorithms
原理: HPack 的压缩算法, 也是将 Key, Value 抽离, 阵列中第一个值, 就是 CJSON 的 Template, 后面依序就是 Value.
原始 JSON
[{    name : "Andrea",    age : 31,    gender : "Male",    skilled : true  }, {    name : "Eva",    age : 27,    gender : "Female",    skilled : true  }, {    name : "Daniele",    age : 26,    gender : "Male",    skilled : false  }]

使用 HPack 压缩的 JSON

[["name","age","gender","skilled"],["Andrea",31,"Male",true],["Eva",27,"Female",true],["Daniele",26,"Male",false]]

结论
HPack 的压缩效率比较高, 如果 JSON 内容太少, CJSON 的资料可能反而会比较多

其他资料:
http://www.oschina.net/p/jsonhpack
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json 流量 压缩