将 Uint8Array 解码为 JSON

问题描述

我正在从 API 获取数据以显示销售和财务报告,但我收到了一个类型 gzip 文件,我设法将其转换为 Uint8Array。我想以某种方式将其解析解码为一个 JSON 文件,我可以用它来访问数据并在我的前端创建图表。 我尝试使用不同的库(pako 和 cborg 似乎是最接近用例的库),但最终出现错误 Vector2.right

这是我目前拥有的代码

Error: CBOR decode error: unexpected character at position 0

我希望有人已经偶然发现了这一点并有一些想法。 非常感谢!

解决方法

请访问此答案 https://stackoverflow.com/a/12776856/16315663 以从响应中检索 GZIP 数据。

假设您已经检索到 UInt8Array 形式的完整数据。

你只需要 UInt8Array 作为字符串

const jsonString = Buffer.from(dataAsU8Array).toString('utf8')

const parsedData = JSON.parse(jsonString)

console.log(parsedData)

编辑

这对我有用

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)
    })
,

谢谢,我实际上只是尝试了这种方法,但出现以下错误:

语法错误:JSON 解析错误:意外的标识符“x”

但我设法使用以下函数以文本格式打印数据:

pyinstaller --add-data "framework/*.ttf:framework" --add-data "ui/resources/*.png:ui/resources" --add-data "ui/resources/*.gif:ui/resources" --noconsole --icon "ui/resources/test.ico" --name "package_ename" app.py

现在我需要将它传递给一个 JSON 对象。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...