我正在尝试编写压缩和解压缩 JSON 字符串,但解压缩总是失败:
Error: Decompression failed
at BrotliDecoder.zlibOnError [as onerror] (zlib.js:170:17) {
errno: -6,
code: 'ERR_CL_SPACE'
}
我无法发送压缩器返回的缓冲区,因为我需要通过 HTTP 响应发送压缩字符串才能将其取回。
此外,如果我使用base64
as 格式,所有工作,但字符串输出大于 simple JSON.stringify
,所以我会避免它。
我的代码:
const zlib = require('zlib')
function compress (json) {
zlib.brotliCompress(JSON.stringify(json), {
params: {
[zlib.constants.BROTLI_PARAM_MODE]: zlib.constants.BROTLI_MODE_TEXT
}
}, (err, data) => {
console.log(err)
console.log(data.toString('utf8'))
console.log('-------------------------------')
decompress(Buffer.from(data.toString('utf8'), 'utf8'))
})
}
function decompress (str) {
zlib.brotliDecompress(str, (err, data) => {
console.log(err)
console.log(data)
})
}
const obj = {
wt: '5de52e98aa54253147060a01',
ex: ['b9ac4a6b-2e72-4bf3-abd5-debf2ece4ba4']
}
compress(obj)
是否有任何参数可以从压缩中获取有效的 utf8 字符串输出?