Want to store a json object in ArrayBuffer
function stringToUint(string) {
    var string = btoa(unescape(encodeURIComponent(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}
function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(str),
    dec = uintToString(enc);
console.log(dec.x);
console.log(dec.x); is printing `undefined. Am I doing it wrongly ?
here is jsfiddle http://jsfiddle.net/DQJyX/137/
Because stringToUint expects a string, and passing an object to it will convert the {'x':'aaaa'} to [Object object] and returns an array representing that object object, and hence on calling uintToString, the array is converted back to [Object object].
Simple solution is to use JSON.stringify to the object before passing it to function and then using JSON.parse to convert to original object.
function stringToUint(string) {
    var string = btoa(unescape(encodeURIComponent(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}
function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(JSON.stringify(str)),
    dec = JSON.parse(uintToString(enc));
    
document.write(dec.x);
in order for it to work you need, in the stringToUint function call to JSON.stringify.
function stringToUint(string) {
    var string = btoa(unescape(JSON.stringify(string))),
        charList = string.split(''),
        uintArray = [];
    for (var i = 0; i < charList.length; i++) {
        uintArray.push(charList[i].charCodeAt(0));
    }
    return new Uint8Array(uintArray);
}
function uintToString(uintArray) {
    var encodedString = String.fromCharCode.apply(null, uintArray),
        decodedString = decodeURIComponent(escape(atob(encodedString)));
    return decodedString;
}
var str = {'x':'aaaa'},
    enc = stringToUint(str),
    dec = uintToString(enc);
console.log(dec);
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With