本节主要介绍 JSON 与对象的应用,实现图片切换,在进行图片切换之前,必须了解如何获取 JOSN 中的各个值。要获取 JSON 中的各个值,需要首先将 JSON 解析为 JS 对象,然后再通过该对象引用键名来获取对应的值。
通过解析得到的 JS 对象,可以采用以下两种格式来获取值。
格式一:json解析得到的JS对象.键名
格式二:json解析得到的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 将有关图片的相关信息都放到一起,代码的可读性更强。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/23965.html