获取嵌套元素数组JSON文件

时间:2018-09-05 09:29:44

标签: jquery arrays json ajax nested

我有这个带有嵌套数组>队列列表的JSON文件。

[{
    "id_shop": "2",
    "shop_name": "Brackets",
    "queue_list": [{
        "id_queue_current": "1",
        "queue_name": "Queue 1",
        "queue_current_number": "12"
    }, {
        "id_queue_current": "2",
        "queue_name": "Queue 2",
        "queue_current_number": "23"
    }]
}]

使用我的jQuery / ajax,我可以正确读取id_shop和shop_name,但是不能读取queue_list中的元素。如何访问这些元素?

    $.ajax({
      type: "GET",
      url: "shop_list.php",
      dataType: 'html',
      success: function(data) { 
            data = JSON.parse(data); 
            data.forEach(function(dataItem){
            var id_shop = dataItem.id_shop;
            var shop_name = dataItem.shop_name;
            var queue_current_number = dataItem.current_number;
            var queue_name = dataItem.queue_name; //this element
             $("#header h1").html('<div>'+shop_name+'</div>');
                 $("#shop_queue").html('<li data-categoryId ="'+id_shop+'"><a href="#shop_'+id_shop+'">'+queue_name+'</a></li>');
         });
         }
    }); 

非常感谢您!

3 个答案:

答案 0 :(得分:1)

尝试以下解决方案,

var test = 
[{
    "id_shop": "2",
    "shop_name": "Brackets",
    "queue_list": [{
        "id_queue_current": "1",
        "queue_name": "Queue 1",
        "queue_current_number": "12"
    }, {
        "id_queue_current": "2",
        "queue_name": "Queue 2",
        "queue_current_number": "23"
    }]
}]

     test.forEach(function(dataItem){
            var id_shop = dataItem.id_shop;
            var shop_name = dataItem.shop_name;
            var queue_data = dataItem.queue_list; 
            queue_data.forEach(function(queueItem){
                var queue_id= queueItem.id_queue_current;
                alert(queue_id);
                var queue_name= queueItem.queue_name;
                alert(queue_name);
                var queue_current_number= queueItem.queue_current_number;
                alert(queue_current_number);
            })
         })
   
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 1 :(得分:0)

您可能必须在成功方法中做类似的事情

var queue_name;

        var queue_lst = dataItem.queue_list.each(function(item, index){
            queue_name=JSON.parse(item).queue_name;
        }); 

答案 2 :(得分:0)

仅通过调用queue_listdataItem.current_number就无法读取和访问dataItem.queue_name中的元素。您可以通过queue_list调用queue_listdataItem.queue_list.current_number之类的元素来访问JSON对象dataItem.queue_list.queue_name中的元素。

希望这可以解决问题。