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

时间:2014-09-02 03:15:00

标签: 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}

如何恢复原始字节数组?

3 个答案:

答案 0 :(得分:11)

如果要将类型化数组表示为JSON中的数组而不是对象,可以pass a replacer function as second argumentJSON.stringifyconvert 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])))