以JSON格式访问较低级别的数据

时间:2012-03-29 01:04:04

标签: jquery json

我已经做了一些搜索,但我一直无法完全理解这是如何完成的。我对jQuery和JSON相对较新。基本上,我有一个庞大的JSON文档,我正在连接并显示它的各种数据。我需要的数据是供应商标签,它嵌套了三个级别,我不确定如何退货。

JSON

    {
    "@order": "1",
    "category": {
        "@id": "204",
        "label": "Category 1",
        "suppliers": {
            "supplier": {
                "label": "Business 1",
                "customicons": [
                    {
                        "@id": "images/img2.jpeg",
                        "#text": "random icon"
                    }
                ]
            }
         }
       }
    },

这是我为形成无序列表而制作的脚本。我尝试了item.category.suppliers.supplier.label,这显然不起作用。我是否需要添加一些遍历每个子级别的函数?我如何获得该标签?

    <script type="text/javascript">
$(document).ready(function(){

    $.getJSON('jsonarray.json', 
    function(data) {

      var items = [];

      $.each(data, function(i,item) {

        items.push('<li id="' + item["@order"] + '"><label for="supplier"><input id="supplier" name="supplier" type="checkbox" class="checkbox"/>' + item.category.suppliers.supplier.label + '</label></li>');

      });

      $('<ul/>', {
        'class': 'checklist-supplier cl2',
        html: items.join('')
      }).appendTo('.list_filter_supplier_side');
    });

});
</script>

所以,基本上问题是如何使用jQuery访问JSON中的子级数据?非常感谢任何澄清。

2 个答案:

答案 0 :(得分:2)

是某种响应中的JSON吗?如果是这样,你可以这样做:

var d = {
"@order": "1",
"category": {
    "@id": "204",
    "label": "Category 1",
    "suppliers": {
        "supplier": {
            "label": "Business 1",
            "customicons": [
                {
                    "@id": "images/img2.jpeg",
                    "#text": "random icon"
                }
            ]
        }
     }
   }
}

//just show the label    
alert(d.category.suppliers.supplier.label);

<强> jsFiddle Example

答案 1 :(得分:1)

除此之外,您正在使用正确的方式访问数据

item.category.suppliers.supplier.label

使用jsonlint验证您的JSON以确认其验证