Javascript Chrome扩展名:StorageArea.Set键作为字符串传递

Javascript Chrome扩展名:StorageArea.Set键作为字符串传递,javascript,google-chrome-extension,Javascript,Google Chrome Extension,晚上好, 我正在尝试将关联数组保存到chrome.storage.local中,如下所示: var keyName = 'name'; var data = //grabbed from an Ajax call saveData(keyName, data); function saveData(keyName, data){ console.log("saving with key: "+keyName); chrome.storage.local.set({keyName:dat

晚上好,

我正在尝试将关联数组保存到chrome.storage.local中,如下所示:

var keyName = 'name';
var data = //grabbed from an Ajax call
saveData(keyName, data);

function saveData(keyName, data){
  console.log("saving with key: "+keyName);
  chrome.storage.local.set({keyName:data});
}
要检查以确保数据正确保存,我加载:

function loadData(keyName){
  console.log("loading: "+keyName);
  chrome.storage.local.get(keyName, function(result){
      console.log(result);
  });
}
日志显示它正在尝试加载正确的密钥名,但什么也没有出现。然后我尝试调用loadData(null),它将显示本地存储的全部内容,我发现:

Object {keyName: Array[3]}
  keyName: Array[3]
  __proto__: Object
我的数据!但它保存的密钥是“keyName”,而不是“name”。saveData中的日志输出它是“使用键“name”保存”,但它是使用键“keyName”保存的

谢谢

多么奇怪

看来我的问题和

他们找到的答案是将JSON{keyName:data}转换为一个对象:

var obj = {};
obj[keyName] = data;
chrome.storage.local.set(obj);
这很有效


这是因为JSON字段自动作为字符串传递吗

你是对的,
{key:value}
{key:value}
是等价的,而
{key:value}
{key:value}
则不是。