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)
var arr = [];
for(var p in Object.getOwnPropertyNames(a)) {
arr[p] = a[p];
}
Run Code Online (Sandbox Code Playgroud)
您可以在字符串化过程之前使用Array.from将 TypedArray 转换为 Array。
JSON.stringify(Array.from(new Int32Array([101, 102, 103])))
Run Code Online (Sandbox Code Playgroud)