js解析json的eval函数
2015-11-10 16:13
429 查看
JS提供两种方式解析JSON
//方式一:使用eval解析
var obj = eval(json);
alert(obj.constructor);
alert(obj.contry.area.women);
//方式二:使用Funtion函数
var strJSON = "{name:'json name'}";//得到的JSON
var obj = new Function("return" + strJSON)();//转换后的JSON对象
alert(obj.name);//json name
alert(obj.constructor);
由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号:
为什么要加括号?
加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
//方式一:使用eval解析
var obj = eval(json);
alert(obj.constructor);
alert(obj.contry.area.women);
//方式二:使用Funtion函数
var strJSON = "{name:'json name'}";//得到的JSON
var obj = new Function("return" + strJSON)();//转换后的JSON对象
alert(obj.name);//json name
alert(obj.constructor);
由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号:
[code]var jsonObject = eval("(" + jsonFormat + ")");
为什么要加括号?
加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
[code]alert(eval("{}"); // return undefined alert(eval("({})");// return object[Object]
相关文章推荐
- JS模拟事件操作
- JavaScript获取当前项目各种路径
- JSP内置对象--pageContext对象(非常重要!!!)
- JSP内置对象--out对象(了解即可)
- JavaScript简介
- JSP内置对象--web安全性及config对象的使用 (了解即可)
- 浅谈Javascript事件委托(代理)
- 5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
- js中的val(),text()和html()区别
- 如何将jsp页面的table报表转换到excel报表导出
- javascript函数的调用种类
- JavaScript学习(四):JavaScript类型转换以及变量作用域
- JavaScript学习(三):JavaScript对象类型
- JavaScript中利用各种循环进行遍历的方式总结
- javascript 定时器工作原理
- JavaScript的document方法汇总
- 【Extjs】timefield使用,以及24小时制
- 简单学习JavaScript中的for语句循环结构
- js密码强度校验