【问题标题】:JSON.parse returning string instead of ArrayJSON.parse 返回字符串而不是数组
【发布时间】:2011-09-20 03:25:09
【问题描述】:

我有一个 javascript 数组,我正在对其进行字符串化以便将其存储在本地存储中

console.log(request.keywords.length);
localStorage.keywords = JSON.stringify(request.keywords);

其中关键字是 javascript 数组。这里request.keywords.length 返回 12,这是数组中的元素数。

检索并解析回 JSON 后

 var keywords = chrome.extension.getBackgroundPage().getItem("keywords");
    var kjos=JSON.parse(keywords);
    console.log(kjos.length);

返回的长度为 342,即整个字符串的长度。我尝试通过 constructor.name 属性获取对象类型,它给了我string 而不是Array

有什么想法吗?

Snippets: Background.html

 function getItem(key) {
    var value;
    log('Get Item:' + key);
    try {
      value = window.localStorage.getItem(key);
    }catch(e) {
      log("Error inside getItem() for key:" + key);
      log(e);
      value = "null";
    }
    log("Returning value: " + value);
    return value;
  }

/////

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
localStorage.keywords = JSON.stringify(request.keywords);
}
);

/////////// Popup.js

var keywords = chrome.extension.getBackgroundPage().getItem("keywords");

    var kjos=JSON.parse(keywords); //kjos is a string variable

///// keywords.js

//keywordsArray is an Array object
    // Message passing to background page
        chrome.extension.sendRequest({message: "setKeywords", keywords: keywordsArray}, function() 
        {
            console.log(keywordsArray);
            console.log("message sent");
          // The data has been sent, we can close the window now.
          //window.close();
        });

【问题讨论】:

  • 你能在keywords这行后面记录什么吗:localStorage.keywords = JSON.stringify(request.keywords);
  • 它的字符串化符号,例如 "[\"Google\", \"Account Options\", \"Search Options\", \"Search Results\", \"jQuery.getJSON() – jQuery API\", \"你如何在 JavaScript 中解析一个看起来像这样的数组...\", \"获取更多讨论结果\"]
  • 可以打印出关键字数组的元素吗?
  • 它的列表很大,但它的标准数组

标签: javascript jquery json google-chrome google-chrome-extension


【解决方案1】:

您需要使用这样的请求 - chrome.extension.sendRequest({message: "setKeywords"...,但对于 getKeywords 操作。函数getItem不能用于访问后台页面的变量。

【讨论】:

    猜你喜欢
    • 2017-07-18
    • 2020-08-07
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多