我想使用jquery获取复杂/嵌套的json

时间:2014-04-10 18:48:25

标签: javascript jquery json nested

请帮助我获取JSON对象;我想获取名称,poster.image.url,backdrops.image [1] .size和version。

我是JSON的新手,有什么简单的方法可以理解。

我写过这个

$(document).ready(function() {
    $.getJSON("customer.json",function(data){
        $.each(data,function(key,value){
            $("ul").append("<li>"+ value.name+ value.posters.image.type +"</li>");
        });
    });
});

我真的坚持这个。

我的JSON文件

[
    {

        "name": "Masculin feminin",
        "alternative_name": "Masculin féminin oder: Die Kinder von Marx und Coca Cola",
        "posters": [
            {
                "image": {
                    "type": "poster",
                    "size": "thumb",
                    "height": 130,
                    "width": 92,
                    "url": "http://cf2.imgobject.com/t/p/w92/issm1E827fK7KHMEdRORA9BoTPs.jpg",
                    "id": "4ea5ebb234f8633bdc0020cb"
                }
            }

        ],
        "backdrops": [
            {
                "image": {
                    "type": "backdrop",
                    "size": "thumb",
                    "height": 172,
                    "width": 300,
                    "url": "http://cf2.imgobject.com/t/p/w300/AnnWas1TyMRRyFuNT9bCZoeqg3t.jpg",
                    "id": "4ea5ebb734f8633bdc0020cf"
                }
            },
            {
                "image": {
                    "type": "backdrop",
                    "size": "poster",
                    "height": 448,
                    "width": 780,
                    "url": "http://cf2.imgobject.com/t/p/w780/AnnWas1TyMRRyFuNT9bCZoeqg3t.jpg",
                    "id": "4ea5ebb734f8633bdc0020cf"
                }
            },
            {
                "image": {
                    "type": "backdrop",
                    "size": "w1280",
                    "height": 736,
                    "width": 1280,
                    "url": "http://cf2.imgobject.com/t/p/w1280/AnnWas1TyMRRyFuNT9bCZoeqg3t.jpg",
                    "id": "4ea5ebb734f8633bdc0020cf"
                }
            },
            {
                "image": {
                    "type": "backdrop",
                    "size": "original",
                    "height": 768,
                    "width": 1336,
                    "url": "http://cf2.imgobject.com/t/p/original/AnnWas1TyMRRyFuNT9bCZoeqg3t.jpg",
                    "id": "4ea5ebb734f8633bdc0020cf"
                }
            }
        ],
        "version": 463,
        "last_modified_at": "2012-04-20 11:05:03 UTC"
    }
]

2 个答案:

答案 0 :(得分:0)

您需要注意对象内的数组。例如,以下是您从第一张海报中访问图像类型的方法:

var imageType = data[0].posters[0].image.type;

有两个数组,因此每个循环需要两个:

$(document).ready(function() {
    $.getJSON("customer.json",function(data){
        $.each(data,function(key,customer){
            $.each(customer.posters,function(key,poster){
                $("ul").append("<li>"+ customer.name + " - " + poster.image.type +"</li>");
            });
        });
    });
});

DEMO

答案 1 :(得分:0)

非常感谢Tshepang,你很棒。 只是想问我是否必须显示backdrops.image [2] .url所以我再次需要在内部进行$ .each循环。我只是想了解这种循环是如何完成的。

我已经这样做了,

$(document).ready(function(){$ .getJSON(&#34; customer.json&#34;,function(customer){$ .each(customer,function(key,customer){$ .each (customer.posters,function(key,posters){$ .each(customer.backdrops,function(key,backdrops){$(&#34; ul&#34;)。append(&#34;
  • &# 34; + customer.name + posters.image.type +&#39; - &#39; + backdrops.image.url +&#34;
  • &#34;);});});} );}};});