Javascript如何压缩JSON数据及应用

Javascript如何压缩JSON数据及应用, 用于在HTTP传输中压缩数据, 提升传输效率

有什么用

抛砖引玉, 仅先以接口传输中的HTTP传输, 来谈为什么要压缩数据? 有什么用?

比如: 压缩数据, 可以是POST的body中需要传输的JSON数据包变小, 数据变少. 从而实现更高效的传输

这与本声HTTP传输中的, HTTP 传输内容的压缩 有不同之处, 一个是在协议层面上对数据进行压缩; 而本文要谈的是在特定的HTTP接口环境下, 使用自定义的压缩方式.

​ 假如存在二者同时混用的情况下, 是否会让数据的解压缩发生异常, 或者数据的二次压缩是否导致其他的异常, 不再本文的讨论范围内.

怎么用

使用pako库解压gzip字符串的步骤如下:

  1. 导入pako库:可以使用<script>标签将pako库直接引入到HTML页面中,也可以使用npm安装并在JavaScript文件中使用import语句导入。

  2. 解压字符串:使用pako.inflate()方法对gzip格式的字符串进行解压缩。该方法的参数为一个Uint8Array类型的数据,需要将gzip格式的字符串转换为Uint8Array类型的数据。

1
2
3
4
5
6
7
8
9
10
11
// 压缩JSON数据
var data = JSON.stringify({message: 'hello world'});
var compressed = pako.deflate(data, {to: 'string'});




// 解压缩JSON数据
var decompressed = pako.inflate(compressed, {to: 'string'});
var json = JSON.parse(decompressed);
console.log(json.message); // 输出 "hello world"

相关内容

实现方法

NetSuite引入pako库

待实例测试的pako库

https://github.com/nodeca/pako/blob/master/dist/pako_deflate.es5.js

https://github.com/nodeca/pako/blob/master/dist/pako.js

https://github.com/nodeca/pako/blob/master/dist/pako_deflate.js

NetSuite调用压缩函数

Sometime you can wish to work with strings. For example, to send stringified objects to server. Pako’s deflate detects input data type, and automatically recode strings to utf-8 prior to compress. Inflate has special option, to say compressed data has utf-8 encoding and should be recoded to javascript’s utf-16.

1
2
3
4
5
6
7
8
9
10
const pako = require('pako');

const test = { my: 'super', puper: [456, 567], awesome: 'pako' };

const compressed = pako.deflate(JSON.stringify(test));




const restored = JSON.parse(pako.inflate(compressed, { to: 'string' }));

灵感来源

如何在JSON中进行数据压缩和解压缩?

HTTP 传输内容的压缩

js解压gzip字符串方法:  js怎么解压gzip字符串?

https://github.com/nodeca/pako

个性化需求沟通 扫客服加V加群: