我的标记,我使用$ .parseJSON获取JSON(将单引号替换为double后):
<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>
我得到一个这样的对象:(来自firebug控制台日志的结果)
[Object { slides=[4]}, Object { info=[3]}]
每个对象看起来像这样:
我可以像这样引用这些对象:
jsonObject[0]['slides'][2].path
jsonObject[1]['info'][0].blurb
但是,我不想依赖数字排序(因此0是&#39;幻灯片&#39; 1是&#39; info&#39;)但是请按名称引用它们而不是不依赖于订单。我想我可以用不同的JSON结构来实现这个目标吗?
答案 0 :(得分: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
'slides'属性需要是一个像你拥有它的对象数组,因为每个项都属于同一类型,但我注意到'info'对象是一个包含各种对象的数组。如果你在'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']
虽然访问“幻灯片”仍然如上所述。