ServiceStack序列化字节[]。如何在javascript中反序列化?

时间:2014-01-26 16:57:35

标签: c# javascript byte servicestack

我正在从C#代码序列化一个字节数组

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

使用ServiceStack(json)。 json中的结果值为“AAA =”

如何对此进行反序列化以获取包含两个元素(0,0)而非“AAA =”的数组?

我是javascript初学者,所以请原谅我的问题。也许ServiceStack正在使用某种我不知道的编码。如果是,如何正确解码?

1 个答案:

答案 0 :(得分: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[]