JavaScript将字节数组转换为JSON并返回

use*_*580 8 javascript arrays json

我无法将JSON字符串转换回字节数组.我的字节数组通过JSON.stringify(字节)转换为JSON字符串.如果我使用JSON.parse将字符串转换回JS,我只得到一个对象,而不再是一个数组.例如在JS控制台中:

> var bytes = new Int32Array([101, 102, 103]);
> var s = JSON.stringify(bytes);
> s;
"{"0":101,"1":102,"2":103}"
> var a = JSON.parse(s);

> a;
Object {0: 101, 1: 102, 2: 103}
Run Code Online (Sandbox Code Playgroud)

如何获取原始字节数组?

Fel*_*ing 12

如果要将类型化数组表示为JSON中的数组而不是对象,可以将替换器函数作为第二个参数传递给,JSON.stringify并首先将类型化数组转换为普通数组:

var bytes = new Int32Array([101, 102, 103]);
var s = JSON.stringify(bytes, function(k, v) {
    if (v instanceof  Int32Array) {
        return Array.apply([], v);
    }
    return v;
});
// s is now "[101, 102, 103]"
Run Code Online (Sandbox Code Playgroud)


gp.*_*gp. 6

var arr = []; 
for(var p in Object.getOwnPropertyNames(a)) {
    arr[p] = a[p];
}
Run Code Online (Sandbox Code Playgroud)


Inu*_*art 5

您可以在字符串化过程之前使用Array.from将 TypedArray 转换为 Array。

JSON.stringify(Array.from(new Int32Array([101, 102, 103])))
Run Code Online (Sandbox Code Playgroud)

  • 请解释你的答案。仅代码答案对未来的访问者没有那么有用 (3认同)