c# - ServiceStack 序列化 byte[]。如何在javascript中反序列化?

标签 c# javascript byte servicestack

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

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

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

如何反序列化它以获得包含两个元素 (0,0) 而不是 "AAA="?

的数组?

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

最佳答案

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[]

关于c# - ServiceStack 序列化 byte[]。如何在javascript中反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21366393/

相关文章:

c# - 在 DesignMode 中编辑集合的最简单方法?

c# - 如何从 Visual Studio 2017 中的类中提取接口(interface)

c# - 使用方法作为默认参数

c# - 使用 Moq .net Core 对文件上传进行单元测试

javascript - 移除之前设置的边框颜色

javascript - 识别函数 javascript 的元素

Java - 是否可以逐行读取文件,停止,然后立即开始读取我停止的地方的字节?

python - 如何从 Python 3 中的整数列表创建字节对象

python - 要列出的字节字符串

javascript - 让 vibrate() 在没有 PhoneGap 的浏览器中工作