jquery解析json字符串-JQUERY使用EVAL解析JSON字符串案例及注意事项

2023-08-22 0 8,274 百度已收录

这里根据jquery异步获取的数据类型——json对象字符串,分别介绍两种方法得到的结果处理方法。

1、对于服务器返回的JSON字符串,如果jquery异步请求没有指定类型,或者以字符串的形式接受jquery解析json字符串,那么就需要将其对象化。 方法也不算太麻烦jquery解析json字符串,只需要把字符串在 eval() 中执行一次即可。 这些方法也适合用常见的javascipt方法获取json对象。 下面的例子说明:

vardataObj=eval("("+data+")");//转换为json对象

alert(dataObj.root.length);//输出root的子对象数量

$.each(dataObj.root,fucntion(idx,item){

如果(idx==0){

返回真;

//输出每个根子对象的名称和值

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

})

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

$.getJSON("http://www.111com.net/",{param:"gaoyusi"}, function(data){

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

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

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

如果(idx==0){

returntrue;//与countinue相同,返回false与break相同

eval解析JSON的注意点

在JS上将JSON字符串解析为JSON数据格式,通常有两种形式:

1.一种是使用eval()函数。

2.使用Function对象进行返回分析。

使用eval函数来解析,但是使用jquery的each方法来遍历

使用jquery解析JSON数据,作为jquery异步请求的传输对象,jquery请求后返回的结果是一个json对象,这里是服务器以JSON方式返回字符串的方式,对于插件封装的JSON对象如JSONObject ,这也是金城的一个小区别,这里就不解释了。

这里先给出JSON字符串集,字符串集如下:

代码如下所示:

变量数据=“

根:

{名称:'1',值:'0'},

{name:'6101',value:'深圳'},

{name:'6102',value:'上海'},

{name:'6103',value:'深圳'},

{name:'6104',value:'上海'},

{name:'6105',value:'新乡市'},

{name:'6106',value:'汉中市'},

{name:'6107',value:'西安'},

{name:'6108',value:'大同市'},

{name:'6109',value:'商洛市'},

{name:'6110',value:'西安市'}

}";

根据jquery异步获取的数据类型——json对象和字符串,这里给出两种形式获取的结果处理方法。

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

vardataObj=eval("("+data+")");//转换为json对象

为什么这里要加“(”(“+data+”)”);//”呢?

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

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

复制代码代码如下:

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

alert(eval("({})");//返回object[Object]

对于这些写法,在JS中,随处可见。

如:(function()){}(); 进行闭包操作等时

-------------------------------------------------- ------------------------------------------

alert(dataObj.root.length);//输出root的子对象数量

$.each(dataObj.root,fucntion(idx,item){

如果(idx==0){

返回真;

//输出每个根子对象的名称和值

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

})

注意:普通js生成json对象只需要把$.each()方法换成for语句即可,其他不变。

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

$.getJSON("http://www.111com.net/",{param:"gaoyusi"}, function(data){

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

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

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

如果(idx==0){

returntrue;//与countinue相同,返回false与break相同

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

});

});

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

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

varjson='{"姓名":"CJ","年龄":18}';

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

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

收藏 (0) 打赏

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

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

悟空资源网 jquery jquery解析json字符串-JQUERY使用EVAL解析JSON字符串案例及注意事项 https://www.wkzy.net/game/140933.html

常见问题

相关文章

官方客服团队

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