javascript 对象 json-javaScript中的eval()方法转换json对象

2023-08-23 0 9,892 百度已收录

<code class="language-javascript">
	    var user = '{name:"张三",age:23,'+ 
		'address:{city:"青岛",zip:"266071"},'+	'email:"iteacher@haiersoft.com.cn",'+
		'showInfo:function(){'+
		'document.write("姓名:"+this.name+"
");'+ 'document.write("年龄:"+this.age+"
");'+ 'document.write("地址:"+this.address.city+"
");'+ 'document.write("邮编:"+this.address.zip+"
");'+ 'document.write("E-mail:"+this.email+"
");} }'; var u = eval('('+user+')'); u.showInfo();

1、对于服务器返回的JSON字符串,如果jquery异步请求没有指定类型javascript 对象 json,或者以字符串的形式接受,那么需要将其作为对象来处理。 方法也不算太麻烦,就是把字符串放在 eval() 中执行一次。 该方法也适合用普通的javascipt方法获取json对象。 下面的例子说明:

var u = eval('('+用户+')');

为什么要在这里添加 ('('+user+')') " 到 eval 呢?

原因是:eval本身的问题。 由于json以“{}”的形式开始和结束,在JS中,会被视为语句块,所以必须强制转换为表达式。

添加括号的目的是强制eval函数在处理JavaScript代码时将括号中的表达式(表达式)转换为对象,而不是作为句子(语句)执行。 举个例子,比如对象字面量{},如果不加内括号,那么eval就会把大括号识别为JavaScript代码块的开始和结束标签,那么{}就会被认为执行一个空的句子。 所以下面两个执行结果是不同的:

Alert(eval("{}"); // 返回未定义

Alert(eval("({})");// 返回对象[Object]

2、对于服务器返回的JSON字符串,如果jquery异步请求将type(通常是这个配置属性)设置为“json”,或者使用$.getJSON()方法获取服务器返回,则eval()不需要方法,因为此时得到的结果已经是一个json对象了javascript 对象 json,直接调用该对象即可。 这里以$.getJSON的方法为例来说明数据处理方法:

$.getJSON("http://www.qk12333.com/",{param:"jcuckoo"}, function(data){

//这里返回的数据已经是一个json对象

//以下其他操作与第一种情况相同

$.each(data.root,函数(idx,item){

如果(idx==0){

return true;//与countinue相同,返回false与break相同

Alert("名称:"+item.name+",值:"+item.value);

});

});

这里非常需要注意的是,表格1中的eval()方法动态执行字符串(可能是js脚本),很容易导致系统安全问题。 因此,可以使用一些避免使用 eval() 的第三方客户端脚本库。 例如JavaScript中的JSON提供了不超过3k的脚本库。

第二种分析方法是使用Function对象来完成,其典型应用是JQUERY中AJAX模式下成功等返回数据的分析

var json='{"姓名":"用户名","年龄":28}';

数据 =(new Function("","re​​turn "+json))();

此时的数据是一个将要解析的json对象。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 javascript javascript 对象 json-javaScript中的eval()方法转换json对象 https://www.wkzy.net/game/148399.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务