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
相关文章推荐
- 将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
- 将PHP程序中返回的JSON格式数据用gzip压缩输出的方法
- SpringMVC 用JackJson做接口返回JSON格式指定的字段解决方法
- getJSON已经执行方法,但是报404
- 探讨JQUERY JSON的反序列化类 using问题的解决方法
- Linux下tar gz bz2 tgz z等众多压缩文件的解压方法
- C# 压缩及解压数据方法
- IIS中启用Gzip压缩传输网页方法
- JSON相关的学习笔记,json的表示方法,eval(),parse(),stringify()方法的使用
- QJSON的编译方法【记录】
- Java构造和解析Json数据的两种方法详解2
- C#使用GET方法获取网络上的JSON数据
- 在PHP语言中使用JSON和将json还原成数组的方法
- SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法
- C# Json序列化 两种结构,三种方法
- Android压缩图片到100K以下并保持不失真的高效方法
- Java构造和解析Json数据的两种方法详解2
- C# .net 接收 vue resources 或者axios的post请求并解析成json的方法
- jQuery 扩展方法 将表单数据转成json
- 压缩ASP.NET中的ViewState的改进方法