从JSon接收未定义的值

时间:2013-06-23 08:20:55

标签: javascript json

根据我之前的post,我正在尝试从名为winners.json的JSon文件中获取一个名称,其格式类似于:

    {"driver":[
      {
        "Year":1984,
        "Name":"Name1",
      },
      {
        "Year":1985,
        "Name":"Name2",
      },
    [etc...]
    ]}

在JavaScript文件中,我从滑块获取一个值,这将是我想在JSon文件中搜索的年份。使用控制台,该值的typeof为“number”。但是,当我遍布JSon搜索年份时,控制台说Json中的“Year”字段是未定义的值,因此我无法获得“Name”字段:

    var len=winners.winner.length;
    console.info(len + " values in JSon");
    for (var i=0; i < len; i++) {
        console.info("Reading line " + i + " Type: " + typeof(winners.winner[i].Year) + " Year: " + winners.winner[i].Year);
        [more code...]
    }

正确读取var len。我尝试做一个演员编号(winners.winner [i] .Year),但我得到了NaN值。

感谢。

1 个答案:

答案 0 :(得分:0)

假设您的代码与以下内容类似:

var jsondata = '{"winner":[ { "Year":1984, "Name":"Name1" }, { "Year":1985, "Name":"Name2" }]';

console.info(jsondata.length)     

for (var i=0; i < len; i++) {
   console.info("Reading line " + i + " Type: " + typeof(jsondata.winner[i].Year) + " Year: " +
   winners.winner[i].Year);
}

然后len变量将返回一个正整数是正确的,但这不是JSON中数组元素的数量,而是字符串中的字符数。正如@Nirk所提到的,需要调用JSON.parse(jsondata);才能将JSON字符串转换为JavaScript对象。