使用jquery解析JSON数据,作为jquery异步请求的传输对象。 jquery请求后返回的结果是一个json对象。 这里考虑的是服务器返回JSON格式字符串的方式。 对于 JSONObject 等插件封装的 JSON 对象,这也是和金城的一个小区别,这里不再解释。
这里,首先给出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 转换为json,如果jquery异步请求没有类型描述,或者是以字符串形式接收的,则需要进行对象化处理。 方法也不算太麻烦,就是把字符串放在 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);
})
注意:普通js生成json对象只需要把$.each()方法换成for语句即可jquery 转换为json,其他不变。
2、对于服务器返回的JSON字符串,如果jquery异步请求将type(通常是这个配置属性)设置为“json”,或者使用$.getJSON()方法获取服务器返回,则eval()不需要方法。 ,因为此时得到的结果已经是一个json对象,所以只需要直接调用该对象即可。 这里以$.getJSON方法为例来说明数据处理方法:
$.getJSON("http://www.phpzixue.cn/",{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的脚本库。
本文来自:IT知道网()详细源码参考:
=================字符串转json的三种形式========================
第一:eval方法分析
Js代码
functionstrToJson(str){varjson=eval('('+str+')');returnjson;}
第二种:newFunction方法
Js代码
functionstrToJson(str){varjson=(newFunction("return"+str))();returnjson;}
第三种方式:使用全局JSON对象
Js代码
functionstrToJson(str){returnJSON.parse(str);}
另外:使用JSON.parse时,必须严格遵循JSON规范。 例如,属性必须由冒号组成,如下
Js代码
varstr='{name:"jack"}';varobj=JSON.parse(str);//-->parseerror
该名称不由冒号组成。 使用JSON.parse时,所有浏览器都会抛出异常,解析失败。 前两种方法都很好。