2014-01-26 64 views
1

我序列化從C#代碼ServiceStack序列化字節[]。如何在JavaScript中反序列化?

byte[] sample = new byte[] {0,0}; 

一個字節數組ServiceStack(JSON)。 json的結果值是「AAA =」

如何反序列化該得到一個數組包含兩個元素(0,0),而不是「AAA =」

我是javascript初學者,所以請原諒我這個問題。也許ServiceStack正在使用某種我不知道的編碼。如果是,如何正確解碼?

回答

3

ServiceStack將序列化爲byte[]作爲Base64字符串。您可以在JavaScript中使用這種方法恢復串byte[]

function getByteArray(str) { 
    var decoded = atob(str); 
    var i, il = decoded.length; 
    var array = new Uint8Array(il); 

    for (i = 0; i < il; ++i) { 
     array[i] = decoded.charCodeAt(i); 
    } 

    return array; 
} 

var byteArray = getByteArray("AAA="); 

Original Source here

支持舊版瀏覽器與字節的工作也不是很大。 Internet Explorer真的只開始handling this in version 10

使用bytes不是真正的初學者級別的JavaScript。我不確定你想要序列化的數據,但除非你使用html canvas上的圖像,否則它很少是你想要的數據類型。畢竟當它轉換爲base64時,遠不是四處運輸。如果您只是發送標誌,請使用bool[]int[]

+0

謝謝!一如既往的搜尋自己的答案,我發現它3分鐘前,你張貼你的。但你的更緊湊。我使用了方法base64DecToArr(「AQA =」);從這裏:http://mzl.la/KYtt9F。 – MVCible

相關問題