本节主要介绍 JSON 与对象的应用,实现图片切换,在进行图片切换之前,必须了解如何获取 JOSN 中的各个值。要获取 JSON 中的各个值,需要首先将 JSON 解析为 JS 对象,然后再通过该对象引用键名来获取对应的值。
通过解析得到的 JS 对象,可以采用以下两种格式来获取值。
例如:
var json = '{"company":"XXX公司", "ceo":{"firstName":"Jason",'+
'"lastName":"Hunter"}}';//定义一个JSON
var obj = JSON.parse(json);//将JSON解析为JS对象
obj.company; //访问company键名,返回:XXX公司
obj.ceo.firstName;//访问ceo键对应的对象的firstName属性值,返回:Jason
obj['ceo']['firstName'];//访问ceo键对应的对象的firstName属性值,返回:Jason
obj['ceo']['firstName'];//访问ceo键对应的对象的firstName属性值,返回:Jason
下面,我们使用 JSON 修改“JS数组实现图片切换”一节中的例 1,将例 1 中的两个数组修改为 JSON 的两个条目。具体代码如下所示(为节省篇幅,在此主要列出修改的代码)。
【例 1】使用 JSON 设置切换图片路径及图片描述信息。
<script>
window.onload = function(){
…
//使用JSON存储切换的图片路径和图片描述信息
var json = '{"url":["images/1.jpg","images/2.jpg","images/3.jpg",'+
'"images/4.jpg"],"text":["可爱的小猫咪","调皮的皮卡丘",'+
'"呆萌的皮卡丘","超酷的小熊"]}';
var imgData = JSON.parse(json);//将json解析为JS对象
var num = 0;
//初始化图片信息
oSpan.innerHTML = num+1 + '/' + imgData.url.length;
oImg.src = imgData.url[num];
oText.innerHTML = imgData.text[num];
//单击向前链接事件
oPrev.onclick = function(){
…
oImg.src = imgData.url[num];
oText.innerHTML = imgData.text[num];
oSpan.innerHTML = num+1 + '/' + imgData.url.length;
}
//单击向后链接事件
oNext.onclick = function(){
num++
if(num == imgData.url.length){
num = imgData.url.length-1;
alert("这是最后一张图片");
}
oImg.src = imgData.url[num];
oText.innerHTML = imgData.text[num];
oSpan.innerHTML = num+1 + '/' + imgData.url.length;
}
}
</script>
细心的读者可能会对上述示例使用 JSON 感到疑惑:就该示例来说,似乎直接使用对象会更直接一些,因为至少不需要对 JSON 的解析啊。就这个示例来说确实是这样的。但需要注意的是,在实际工作中,我们需要处理的数据,如示例中的图片路径和名字可能来源于其他地方,比如通过 HTTP 请求的后端数据。
这些后端数据有可能是对象或数组,后端要和前端交换这些数据,就需要使用 JSON 对它们进行转换:在后端将对象转换为 JSON 然后进行传送;前端接收到的数据为 JSON,然后通过对解析 JSON 得到 JS 对象,之后前端就可以直接对 JS 对象进行操作了。可见,通过 JSON,在前端就实现了对后端对象的操作。
上述代码修改后的运行结果和“JS数组实现图片切换”一节中的例 1 完全一样。但使用 JSON 将有关图片的相关信息都放到一起,代码的可读性更强。