<p>请访问此答案<a href="https://stackoverflow.com/a/12776856/16315663">https://stackoverflow.com/a/12776856/16315663</a>以从响应中检索GZIP数据</p>
<p>假设您已经以UInt8Array的形式检索到完整数据</p>
<p>您只需要将UInt8Array作为字符串</p>
<pre class="lang-js prettyprint-override"><code>const jsonString = Buffer.from(dataAsU8Array).toString('utf8')
const parsedData = JSON.parse(jsonString)
console.log(parsedData)
</code></pre>
<p><strong>编辑</strong></p>
<p>这是对我有用的</p>
<pre class="lang-js prettyprint-override"><code>const {request} = require("https")
const zlib = require("zlib")
const parseGzip = (gzipBuffer) => new Promise((resolve, reject) =>{
zlib.gunzip(gzipBuffer, (err, buffer) => {
if (err) {
reject(err)
return
}
resolve(buffer)
})
})
const fetchJson = (url) => new Promise((resolve, reject) => {
const r = request(url)
r.on("response", (response) => {
if (response.statusCode !== 200) {
reject(new Error(`${response.statusCode} ${response.statusMessage}`))
return
}
const responseBufferChunks = []
response.on("data", (data) => {
console.log(data.length);
responseBufferChunks.push(data)
})
response.on("end", async () => {
const responseBuffer = Buffer.concat(responseBufferChunks)
const unzippedBuffer = await parseGzip(responseBuffer)
resolve(JSON.parse(unzippedBuffer.toString()))
})
})
r.end()
})
fetchJson("https://wiki.mozilla.org/images/f/ff/Example.json.gz")
.then((result) => {
console.log(result)
})
.catch((e) => {
console.log(e)
})
</code></pre>