2014-09-02 84 views
3

我無法將JSON字符串轉換回字節數組。我的字節數組通過JSON.stringify(字節)轉換爲JSON字符串。如果我使用JSON.parse將字符串轉換回JS,我只會得到一個對象,而不是數組。 例如在JS控制檯:JavaScript將字節數組轉換爲JSON並返回

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

我怎樣才能得到原始字節數組回來?

+2

您必須用'a'中的數據創建一個新的數據。 JSON沒有「類型數組」的表示,只是數組。 – 2014-09-02 03:19:44

+0

爲什麼你不能使用數組本身沒有轉換爲Int32Array – 2014-09-02 03:20:27

+0

b/c我想通過網絡發送JSON字符串。 – user1510580 2014-09-02 03:21:52

回答

5
var arr = []; 
for(var p in Object.getOwnPropertyNames(a)) { 
    arr[p] = a[p]; 
} 
+0

謝謝,@gp,工作。儘管我最初正在尋找一個不帶迭代的簡單函數調用,但您的答案很簡單並且可以接受。 – user1510580 2014-09-02 03:51:04

1

您可以使用Array.from到TypedArray轉換成在字符串化過程之前的一個數組。

JSON.stringify(Array.from(new Int32Array([101, 102, 103]))) 
+0

請解釋你的答案。只有代碼答案對未來的訪問者沒有用處 – Liam 2016-10-10 14:08:33

相關問題