无法从嵌套的Json数据中检索数据

时间:2017-01-24 21:32:32

标签: javascript jquery html json closures

在下面的代码中,我试图从json中提取数据,并且发生的错误很少,我不明白。在我之前的帖子中,有人提到它与关闭问题有关。任何人都可以解释为什么这个问题仍然会发生,尽管我已经改变了" var"到"让"在两个for循环?

我想尝试绑定解决方案,但是,我不明白这些步骤。这是因为我指的是json文件中的循环数组。

function displayData(data) {
var json = JSON.parse(data);

alert (json.projects[0].task_data[1].taskName); //working

for (let i = 0; i < json.projects.length; i++) {

    $.ajax({ url: epridlist, method: 'GET' }).then(function (datas) {
          alert (json.projects[i].projName); //success load the value
    });

    for (let j = 0; j < json.projects[i].task_data.length; j++) { 
        $.ajax({url: tasklist,method: 'GET'}).then(function (data) 
        {alert (json.projects[i].task_data[j].taskName);});//success only on first row, next row value is undefined  
         alert (json.projects[0].task_data[1].taskName); //undefined          
    }
}
}

这是json数据

{"projects":[{"projName":"1","task_data":[{"taskName":"1","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]},[{"taskName":"2","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]]},{"projName":"2","task_data":[{"taskName":"3","task_detail_data":[{"h_sun":"0.00","h_mon":"0.00","h_tue":"0.00","h_wed":"0.00","h_thu":"0.00","h_fri":"0.00","h_sat":"0.00"}]}]}]}

谢谢

2 个答案:

答案 0 :(得分:2)

您的JSON数据似乎结构不一致。

Json Viewer程序中查看JSON时,task_data的第一个元素是一个对象而第二个是一个数组(见下图):

enter image description here

代码中的下一行会导致问题:

json.projects[0].task_data[1].taskName

答案 1 :(得分:2)

这个问题出现在这里:json.projects[0].task_data[1].taskName你正在试图加入一个如何不存在的对象。 task_data数组在第二个位置是一个数组,而不是一个对象。解决问题的方法是使用json.projects[i].task_data[0].taskName加入对象而不是数组。