JavaScript-javascript压缩json数据的方法?
前台通过AJAX请求将json数据提交到后台缓存,由于内存有限。需要减少json数据的大小。
在不改变原有数据结构的情况下JS有方法能压缩json数据?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
前台通过AJAX请求将json数据提交到后台缓存,由于内存有限。需要减少json数据的大小。
在不改变原有数据结构的情况下JS有方法能压缩json数据?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
给你个js封装压缩解压数据的方法:
//压缩
function lzw_encode(s) {
var dict = {};
var data = (s + "").split("");
var out = [];
var currChar;
var phrase = data[0];
var code = 256;
for (var i=1; i<data.length; i++) {
currChar=data[i];
if (dict[phrase + currChar] != null) {
phrase += currChar;
}
else {
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
dict[phrase + currChar] = code;
code++;
phrase=currChar;
}
}
out.push(phrase.length > 1 ? dict[phrase] : phrase.charCodeAt(0));
for (var i=0; i<out.length; i++) {
out[i] = String.fromCharCode(out[i]);
}
return out.join("");
}
//解压
function lzw_decode(s) {
var dict = {};
var data = (s + "").split("");
var currChar = data[0];
var oldPhrase = currChar;
var out = [currChar];
var code = 256;
var phrase;
for (var i=1; i<data.length; i++) {
var currCode = data[i].charCodeAt(0);
if (currCode < 256) {
phrase = data[i];
}
else {
phrase = dict[currCode] ? dict[currCode] : (oldPhrase + currChar);
}
out.push(phrase);
currChar = phrase.charAt(0);
dict[code] = oldPhrase + currChar;
code++;
oldPhrase = phrase;
}
return out.join("");
}
1:服务器端开启gzip.
2:调整传输的JSON格式:如 data = [{name:'deng',des:'info',length:30,value:'wo'}...]改:data = {key:{name:1,desc:2},data:[['test','info']]},主要用来减少数据集中重复键值。
用gzip去压缩,前端解压就可以了。
介绍我们使用的压缩解压算法,js实现。
使用方法1(解压):
http://www.onicos.com/staff/iz/amuse/javascript/expert/inflate.txt
1、利用服务器端的程序将数据压缩,最好是加上base64编码这样可以取到ascii文本,这样就可以方便跟网页的其他源码混在一起。
2、在客户端取到数据后用js的函数解压,就可以作后续使用。
3、使用角度:主要是轻度的加密:一般人要解开这些东西,比较麻烦。
4、注意:一、这个办法和服务器自动压缩不同,自动压缩在客户端可以很方便地看到源码;二、如果不是为了加密而是压缩,那内容最好是大于1000字节,否则可能达不到什么压缩的效果。
使用方法2(压缩):
http://www.onicos.com/staff/iz/amuse/javascript/expert/deflate.txt
1、首先把数据用js函数压缩,然后转换成base64代码。
2、传到服务器用程序解开,这些都是废话了。
3、使用角度:把客户端提交的表单和数据先压缩了,然后上传到服务器,因为现在的服务器端压缩技术都不会支持上传压缩,所以此项技术有实用价值,额外的还可以实现上传数据轻度加密。