2012-02-01 60 views
3

我的標記引用JSON對象,我使用$ .parseJSON(更換單引號後雙)獲得JSON:按名稱

<a href="#" data-thumbslide=" 
    [{'slides': 
    [ 
     { 'path' : 'img/slider-images/jeep_1.jpg' }, 
     { 'path' : 'img/slider-images/jeep_2.jpg' }, 
     { 'path' : 'img/slider-images/jeep_3.jpg', 'fullscreen' : 'img/slider-images/jeep_3-fs.jpg' }, 
     { 'path' : 'img/slider-images/jeep_4.jpg', 'fullscreen' : 'img/slider-images/jeep_4-fs.jpg'} 
    ], 
    }, 
    {'info': 
    [ 
     { 'blurb' : 'Lorem ipsum dolor sit amet consquiteur' }, 
     { 'website' : 'http://www.google.co.uk' }, 
     { 'credits' : 'Warner bros productions' } 
    ] 
    }]"> 
    <div class="title"><h1>Jeep</h1></div> 
</a> 

我得到這樣的對象:(從螢火控制檯日誌結果)

[Object { slides=[4]}, Object { info=[3]}] 

每個物體看起來是這樣的:

slides object inside JSON object

我可以參考的對象是這樣的:

jsonObject[0]['slides'][2].path 
jsonObject[1]['info'][0].blurb 

但是我不想依靠通過編號的數組順序(所以0是「滑梯」,1是「信息」),但通過名稱來引用他們,而不是而不是依賴於訂單。我想我可以用不同的JSON結構來實現這一點?

回答

3

如果省略了外[]陣列支架和一對夫婦的{}支架可以使「滑」和相同的(非數組)對象的「信息」屬性:

{ 
'slides': 
    [ 
     { 'path' : 'img/slider-images/jeep_1.jpg' }, 
     { 'path' : 'img/slider-images/jeep_2.jpg' }, 
     { 'path' : 'img/slider-images/jeep_3.jpg', 'fullscreen' : 'img/slider-images/jeep_3-fs.jpg' }, 
     { 'path' : 'img/slider-images/jeep_4.jpg', 'fullscreen' : 'img/slider-images/jeep_4-fs.jpg'} 
    ], 
'info': 
    [ 
     { 'blurb' : 'Lorem ipsum dolor sit amet consquiteur' }, 
     { 'website' : 'http://www.google.co.uk' }, 
     { 'credits' : 'Warner bros productions' } 
    ] 
} 

然後你可以像這樣訪問:

jsonObject['slides'][2].path  // OR jsonObject.slides[2].path 
jsonObject['info'][0].blurb  // OR jsonObject.info[0].blurb 

的「幻燈片」屬性需要一個像你擁有了它,因爲每個項目是同類型的是對象的數組,但我注意到,「信息」的對象是包含數組對象都是不同的。如果你在'info'中只有一個'blurb','website','credits'(或者'whatever'),你可以重構該部分來移除嵌套數組,然後使'blurb'等屬性單嵌套的對象:

{'slides': 
    [ 
     { 'path' : 'img/slider-images/jeep_1.jpg' }, 
     { 'path' : 'img/slider-images/jeep_2.jpg' }, 
     { 'path' : 'img/slider-images/jeep_3.jpg', 'fullscreen' : 'img/slider-images/jeep_3-fs.jpg' }, 
     { 'path' : 'img/slider-images/jeep_4.jpg', 'fullscreen' : 'img/slider-images/jeep_4-fs.jpg'} 
    ], 
    'info': { 
     'blurb' : 'Lorem ipsum dolor sit amet consquiteur', 
     'website' : 'http://www.google.co.uk', 
     'credits' : 'Warner bros productions' 
    } 
    } 

然後你就可以說:

jsonObject['info'].blurb 
// or 
jsonObject.info.blurb 
// or 
jsonObject['info']['blurb'] 
// or 
jsonObject.info['blurb'] 

雖然獲得 '幻燈片' 仍然會像上面。

+0

正是我在尋找感謝的努力! :) – 2012-02-01 14:18:32