我使用 $.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>
我得到一个像这样的对象:(来自firebug控制台日志的结果)
[Object { slides=[4]}, Object { info=[3]}]
每个对象看起来像这样:
我可以像这样引用对象:
jsonObject[0]['slides'][2].path
jsonObject[1]['info'][0].blurb
但是,我不想依赖于按数字排列的数组顺序(因此 0 是“幻灯片”,1 是“信息”),而是按名称引用它们,而不是依赖顺序。我想我可以用不同的 JSON 结构来实现这一点?
最佳答案
如果省略外部 []
数组括号和几个 {}
括号,您可以使“slides”和“info”属性具有相同的属性(非-数组)对象:
{
'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']
虽然对“幻灯片”的访问仍然如上。
关于jquery - 按名称引用 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9095524/