前言
无论使用何种编程语言,json格式的数据已被广泛应用,不论是数据的传输还是存储,在很多应用场景下,你可能想进一步地压缩JSON字符串的长度,以提升传输效率,如果你使用的是nosql数据库,你可能想进一步的压缩json字符串的长度来节省你的存储空间,接下来,我将介绍一下目前最常用的json数据压缩技术(CJSON和HPack)的实现。
CJSON
CJSON 的压缩算法,主要是将资料抽离成 Template 与 Value,节省掉重复的 “Key 值”。
原数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[
{
"x": 100,
"y": 100
},
{
"x": 100,
"y": 100,
"width": 200,
"height": 150
},
{},
]
|
压缩之后:
1
2
3
4
5
6
7
8
9
10
11
12
|
{
"templates": [
[0, "x", "y"],
[1, "width", "height"]
],
"values": [
{
"values": [1, 100, 100] },
{
"values": [2, 100, 100, 200, 150] },
{}
]}
|
HPack
HPack 的压缩算法,也是将 Key、Value 抽离,阵列中第一个值,就是HPack 的 Template,后面依序就是 Value。
原数据:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[
{
"name" : "Andrea",
"age" : 31,
"gender" : "Male",
"skilled" : true
},
{
"name" : "Eva",
"age" : 27,
"gender" : "Female",
"skilled" : true
}, {
"name" : "Daniele",
"age" : 26,
"gender" : "Male",
"skilled": false
}]
|
压缩之后:
1
2
3
4
5
6
|
[
["name", "age", "gender", "skilled"],
["Andrea", 31, "Male", true],
["Eva", 27, "Female", true],
["Daniele", 26, "Male", false]
]
|
参考
介绍常见的JSON压缩算法