首页 > 代码库 > Javascript中的Array(数组) 、{}(映射) 与JSON解析
Javascript中的Array(数组) 、{}(映射) 与JSON解析
做网页总会使用javascript,使用javascript总会使用JSON。最近用到一下,就写写。
下面是总结:
1.将javascript中的Array和{}转化为json字符串可以使用json2.js,源码地址https://github.com/douglascrockford/JSON-js。
2.将json字符串转为javascript对象,可以使用javascript自带的eval函数。
3.javascript中可以使用typeof查看变量的类型。
4.要访问json字段,必须是对对象的访问。
jquery实例代码:
1 <script type="text/javascript"> 2 $(function(){ 3 var myArray=new Array(); ///数组 4 myArray[0]="fgh"; 5 myArray[1]="rt"; 6 myArray[2]="xc"; 7 var arrString=JSON.stringify(myArray); //将myArray对象转化为字符串 8 alert(arrString); //["fgh","rt","xc"] 9 var obj1=eval("("+arrString+")"); ///eval将字符串转为json对象,注意在两边加上"("和")"10 alert("数组第1个元素"+obj1[0]);11 12 var myMap = {}; //对象13 myMap[‘name‘] = "lxd";14 myMap[‘age‘] = 20;15 myMap[‘content‘] = myArray; 16 var mapString=JSON.stringify(myMap); ///将myMap对象转化为字符串17 alert(mapString); ///{"name":"lxd","age":20,"content":["fgh","rt","xc"]}18 var obj2=eval("("+mapString+")");19 alert("map中的name字段:"+obj2.name);20 });21 </script>
为什么eval("("+mapString+")")
eval本身的问题。 由于json可能是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。
参考:
http://www.cnblogs.com/myjavawork/archive/2011/03/10/1979279.html
http://www.cnblogs.com/lidabo/archive/2011/12/29/2305770.html
http://www.sojson.com/
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。