Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问复杂JSON格式的数据?_Javascript_Jquery_Json - Fatal编程技术网

Javascript 如何访问复杂JSON格式的数据?

Javascript 如何访问复杂JSON格式的数据?,javascript,jquery,json,Javascript,Jquery,Json,在下面的代码中,为什么我不能访问JSON的detail选项中的数据?我想做的是将firstName、lastName和age加载到每个对象的列表中 var数据={ “事件”:[{ “日期”:“一”, “事件”:“, “信息”:“哥本哈根”, “细节”:[{ “名字”:“莎莉”, “姓氏”:“绿色”, “年龄”:27 }] }, { “日期”:“两个”, “事件”:“, “信息”:“哥本哈根”, “细节”:[{ “名字”:“莎莉”, “姓氏”:“绿色”, “年龄”:27 }] }, { “日期”

在下面的代码中,为什么我不能访问JSON的
detail
选项中的数据?我想做的是将
firstName
lastName
age
加载到每个对象的列表中

var数据={
“事件”:[{
“日期”:“一”,
“事件”:“,
“信息”:“哥本哈根”,
“细节”:[{
“名字”:“莎莉”,
“姓氏”:“绿色”,
“年龄”:27
}]
}, {
“日期”:“两个”,
“事件”:“,
“信息”:“哥本哈根”,
“细节”:[{
“名字”:“莎莉”,
“姓氏”:“绿色”,
“年龄”:27
}]
}, {
“日期”:“三次”,
“事件”:“,
“信息”:“哥本哈根”,
“细节”:[{
“名字”:“莎莉”,
“姓氏”:“绿色”,
“年龄”:27
}]
}]
};
对于(p=0;p”+data.events.detail[i]+”);
}
}


    在json中,事件是一个数组。但是您正在尝试访问data.events.detail,它应该类似于data.events[p]。detail

    不要忘记
    data.events
    是一个数组,因此您必须为

    for(i=0;i

    一定是

    for(i=0;i

    而且,因为
    data.events[].detail
    也是一个数组,所以您也必须指定该索引

    以下代码成功检索了所需的数据:

    var数据={
    “事件”:[{
    “日期”:“一”,
    “事件”:“,
    “信息”:“哥本哈根”,
    “细节”:[{
    “名字”:“莎莉”,
    “姓氏”:“绿色”,
    “年龄”:27
    }]
    }, {
    “日期”:“两个”,
    “事件”:“,
    “信息”:“哥本哈根”,
    “细节”:[{
    “名字”:“莎莉”,
    “姓氏”:“绿色”,
    “年龄”:27
    }]
    }, {
    “日期”:“三次”,
    “事件”:“,
    “信息”:“哥本哈根”,
    “细节”:[{
    “名字”:“莎莉”,
    “姓氏”:“绿色”,
    “年龄”:27
    }]
    }]
    };
    对于(p=0;p
    
    


      首先,从技术上讲,您所编写的不是“JSON”,它只是一个JavaScript对象。然而,您走的是正确的道路。不清楚您的要求是什么,但我已经详细介绍了您必须为您提供的东西,希望无论怎样都能有所帮助

      var数据={
      “事件”:[
      {
      “日期”:“一”,
      “事件”:“,
      “信息”:“哥本哈根”,
      “细节”:[
      {
      “名字”:“莎莉”,
      “姓氏”:“绿色”,
      “年龄”:27
      }
      ]
      }, 
      {
      “日期”:“两个”,
      “事件”:“,
      “信息”:“哥本哈根”,
      “细节”:[
      {
      “名字”:“约翰”,
      “姓氏”:“蓝色”,
      “年龄”:22
      }
      ]
      }, 
      {
      “日期”:“三次”,
      “事件”:“,
      “信息”:“哥本哈根”,
      “细节”:[
      {
      “名字”:“山姆”,
      “姓氏”:“红色”,
      “年龄”:25岁
      }
      ]
      }
      ]
      };
      对于(i=0;i);
      对于(j=0;j”);
      $(“.container ul:last”).append(“
    • ”+data.events[i].detail[j].firstName+”
    • '); $(“.container ul:last”).append(“
    • ”+data.events[i].detail[j].lastName+”
    • '); $(“.container ul:last”).append(“
    • ”+data.events[i].detail[j].age+”
    • '); } }
      
      
      是否需要在for循环中放入
      var p=0;
      。@radation need,no,但这不是一个坏主意。与
      i
      True相同。对于(var i=0;i'+data.events[p].detail[i]+'');)的内部for循环,尝试此操作
      谢谢Daniel,但这不是我想要实现的。我需要立即将每个选项的详细信息放在它们下面。现在发生的事情是,您将日期和详细信息分开,因此不清楚哪个细节属于哪个日期!谢谢Aender,但请让我知道
      last
      ul:last
      中的角色是什么e每次循环时,它都会添加另一个
      ,因此我只是使用
      :last
      选择器来确保内容被添加到上次添加的列表中。