2011-06-24 45 views
1

我当前的项目通过ajax请求向JSON中的浏览器发送大量数据。使用gzip压缩的JSON格式

我一直在试图决定我应该使用哪种格式。这两个我心目中是

[ 
    "colname1" : "content", 
    "colname2" : "content", 
], 
[ 
    "colname1" : "content", 
    "colname2" : "content", 
], 
... 

{ 
"columns": [ 
    "column name 1", 
    "column name 2", 
], 
"rows": [ 
    [ 
     "content", 
     "content" 
    ], 
    [ 
     "content", 
     "content" 
    ] 
    ... 
] 

}

第一种方法是更好,因为它更容易使用。我只需要转换成一个对象一旦收到。第二个将需要一些后处理将其转换为更像第一个的格式,因此使用JavaScript更容易。

第二个更好,因为它不那么冗长,因此占用更少的带宽和下载更快。在压缩之前,它通常在第一种格式的大小的0.75%和0.85%之间。

GZip压缩使事情进一步复杂化。使文件大小差异接近0.85%至0.95%

我应该使用哪种格式,为什么?

回答

2

我建议使用RJSON

RJSON(递归JSON)任何JSON数据采集转换成更紧凑的递归形式。压缩数据仍然是JSON,可以使用JSON.parse进行解析。 RJSON不仅可以压缩同类集合,而且可以压缩任何具有自由结构的数据集。

实施例:

JSON:

{ 
"id": 7, 
"tags": ["programming", "javascript"], 
"users": [ 
    {"first": "Homer", "last": "Simpson"}, 
    {"first": "Hank", "last": "Hill"}, 
    {"first": "Peter", "last": "Griffin"} 
], 
"books": [ 
    {"title": "JavaScript", "author": "Flanagan", "year": 2006}, 
    {"title": "Cascading Style Sheets", "author": "Meyer", "year": 2004} 
] 
} 

RJSON:

{ 
"id": 7, 
"tags": ["programming", "javascript"], 
"users": [ 
    {"first": "Homer", "last": "Simpson"}, 
    [2, "Hank", "Hill", "Peter", "Griffin"] 
], 
"books": [ 
    {"title": "JavaScript", "author": "Flanagan", "year": 2006}, 
    [3, "Cascading Style Sheets", "Meyer", 2004] 
] 
} 
0

实例1的第二位不应该是“rowname1”等等吗?我没有真正得到例子2,所以我想我会把你的目标瞄准为1.有很多事情要说,让数据立即可用,而无需事先处理它。理由:我曾经花费太长时间来优化阵列系统,结果证明它完美地工作,但它现在更新它的地狱。