I'm writing a chrome extension, and I can't store an array. I read that I should use JSON stringify/parse to achieve this, but I have an error using it.
chrome.storage.local.get(null, function(userKeyIds){ if(userKeyIds===null){ userKeyIds = []; } var userKeyIdsArray = JSON.parse(userKeyIds); // Here I have an Uncaught SyntaxError: Unexpected token o userKeyIdsArray.push({keyPairId: keyPairId,HasBeenUploadedYet: false}); chrome.storage.local.set(JSON.stringify(userKeyIdsArray),function(){ if(chrome.runtime.lastError){ console.log("An error occured : "+chrome.runtime.lastError); } else{ chrome.storage.local.get(null, function(userKeyIds){ console.log(userKeyIds)}); } }); });
How could I store an array of objects like {keyPairId: keyPairId,HasBeenUploadedYet: false} ?
You can store arrays directly.
The array becomes a string and you can save it into your browser's local storage.
To save arrays or objects using the localStorage API in JavaScript, we need to first stringify the arrays or objects using the JSON. stringify() method, and when we need to retrieve the value we can use the JSON. parse() method.
Google Chrome/ChromiumChrome treats cookies and local storage as the same thing, so these steps work for both. Click on the menu button in the top-right corner of your Chrome window. Select “Settings” from that menu. Click “Cookies and site permissions”.
I think you've mistaken localStorage
for the new Chrome Storage API
.
- You needed JSON strings in case of the localStorage
- You can store objects/arrays directly with the new Storage API
// by passing an object you can define default values e.g.: [] chrome.storage.local.get({userKeyIds: []}, function (result) { // the input argument is ALWAYS an object containing the queried keys // so we select the key we need var userKeyIds = result.userKeyIds; userKeyIds.push({keyPairId: keyPairId, HasBeenUploadedYet: false}); // set the new array value to the same key chrome.storage.local.set({userKeyIds: userKeyIds}, function () { // you can use strings instead of objects // if you don't want to define default values chrome.storage.local.get('userKeyIds', function (result) { console.log(result.userKeyIds) }); }); });
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