Если у вас есть php:
php -r 'var_export(json_decode(`curl http://twitter.com/users/username.json`, 1));'
Например: у нас есть ресурс, который предоставляет json странам iso-коды: http://country.io/iso3.json и мы можем легко увидеть его в оболочке с curl:
curl http://country.io/iso3.json
, но она выглядит не очень удобной и не читаемой, лучше разобрать json и увидеть читаемую структуру:
php -r 'var_export(json_decode(`curl http://country.io/iso3.json`, 1));'
Этот код напечатает что-то вроде:
array (
'BD' => 'BGD',
'BE' => 'BEL',
'BF' => 'BFA',
'BG' => 'BGR',
'BA' => 'BIH',
'BB' => 'BRB',
'WF' => 'WLF',
'BL' => 'BLM',
...
, если у вас есть вложенные массивы, этот вывод будет выглядеть намного лучше ...
Надеюсь, это поможет ...
Проблема заключается в chrome.storage.sync.set({key: testPrefs}
Ваши данные хранятся как
{
key: "{"val":10}"
}
Итак, ваш код chrome.storage.sync.get('myKey')
возвращает неопределенный \nустой объект.
Использовать строку "key"
в качестве вашей клавиши
chrome.storage.sync.get("key", function (obj) {
console.log(obj);
});
или
Установить данные через "myKey"
.
chrome.storage.sync.set({"myKey": testPrefs}
PS: Не забывайте, что chrome.storage.sync
- это постоянный API хранения, используйте chrome.storage.sync.clear перед любым дальнейшим тестированием, чтобы увидеть изменения
Используйте этот код для установки значения переменной в Chrome.storage
function storeUserPrefs() {
var key = "myKey",
testPrefs = JSON.stringify({
'val': 10
});
var jsonfile = {};
jsonfile[key] = testPrefs;
chrome.storage.sync.set(jsonfile, function () {
console.log('Saved', key, testPrefs);
});
}
Он генерирует следующий вывод
Object{
myKey: "{"val":10}"
}
function storeUserPrefs() {
var key='myKey', testPrefs = {'val': 10};
chrome.storage.sync.set({[key]: testPrefs}, function() {
console.log('Saved', key, testPrefs);
});
}
Вы можете просто заставить оценить ключ переменной, используя [ключ] при сохранении. Таким образом, вы можете легко настроить свои клавиши динамически. Надеюсь, что это поможет.
Поскольку chrome.storage.sync может хранить объекты JS, вы можете просто сделать это:
var save = {};
save["myKey"] = testPrefs;
chrome.storage.sync.set(save, function() {
console.log('Settings saved');
});
testPrefs = JSON.stringify({
'val': 10
});
var jsonfile = {};
jsonfile[key] = testPrefs;
chrome.storage.sync.set(jsonfile, function () {
console.log('Saved', key, testPrefs)