2014-01-26 2 views
1

Я сериализации байтовый массив из C кодаServiceStack serialized byte []. Как десериализовать в javascript?

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

# с ServiceStack (JSON). Значение результата в json равно "AAA =".

Как десериализации это, чтобы получить массив с двумя элементами (0,0) вместо «ААА =»?

Я начинаю javascript, поэтому, пожалуйста, простите меня. Возможно, ServiceStack использует какую-то кодировку, о которой я не знаю. Если да, то как правильно его декодировать?

ответ

3

ServiceStack сериализует byte[] как строку Base64. Вы можете восстановить строку byte[] с помощью этого метода в JavaScript:

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

Смежные вопросы