未定义的JSON变量问题

时间:2015-05-02 21:20:08

标签: javascript json node.js

我有一个基本的Node.js脚本,它从几个变量和其他数组创建一个JSON数组。但是,每当我在我的代码中调用myJSON.title时它根本不起作用。它给出了undefined。有人可以帮帮我吗?

for (var i = 0; i < route.length; i++) {

  var item = {
    "title": title[i],
    "date": date[i],
    "summary": summary[i],
    "route": route[i],
    "pebbleid": "geoquery-" + timegreeting + route[i]
  };

  myarray.push(item);
  for (var i = 0; i < route.length; i++) {

    var item = {
      "title": title[i],
      "date": date[i],
      "summary": summary[i],
      "route": route[i],
      "pebbleid": "geoquery-" + timegreeting + route[i]
    };

    myarray.push(item);
  }

  myJSON = JSON.stringify({delays: myarray});

  console.log(myJSON);
}

1 个答案:

答案 0 :(得分:4)

myJSON.title未定义的原因是JSON.stringify返回一个字符串,而字符串没有title属性。

由JSON字符串myJSON表示的对象具有单个属性delays,(因为这是您放在JSON.stringify中的内容)。该属性的值是一个数组。该数组的每个元素都是一个具有title属性(datesummary等)的对象。因此,要获得任何一个title,首先必须检索delays数组,然后通过索引检索其中一个元素,然后检索该元素的title属性。

因此,例如delays中的第0个元素,你会这样做:

obj.delays[0].title

我使用了“obj”,因为这不适用于myJSON,因为正如我所说,在您显示的代码中myJSON是一个JSON字符串,而不是JavaScript对象,所以没有delays属性。