我无法将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}
如何恢复原始字节数组?
答案 0 :(得分:11)
如果要将类型化数组表示为JSON中的数组而不是对象,可以pass a replacer function as second argument到JSON.stringify
和convert the typed array to a normal array first:
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]"
答案 1 :(得分:6)
var arr = [];
for(var p in Object.getOwnPropertyNames(a)) {
arr[p] = a[p];
}
答案 2 :(得分:3)
您可以在字符串化过程之前使用Array.from将TypedArray转换为数组。
JSON.stringify(Array.from(new Int32Array([101, 102, 103])))