本文实例讲述了jquery解析json格式数据的方法。分享给大家供大家参考,具体如下:
json数据是我们常用的一种小型的数据实时交换的一个东西,他可以利用jquery或js进行解析,下面我来介绍jquery解析json字符串方法。
一、jquery解析json数据格式:
使用这种方法,你必须在ajax请求中设置参数:
datatype: json
获取通过回调函数返回的数据并解析得到我们想要的值,看源码:
jquery.ajax({ url: full_url, datatype: json, success: function(results) { alert(result.name); } });
通常情况下,你可以从后台返回json数据,前台就交给jquery啦,哈哈!!
jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用$.getjson()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以$.getjson方法为例
例1
代码如下:
var data= { root: [ {name:'1',value:'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
$.getjson(http://www.jb51.net/,{param:sanic},function(data){ //此处返回的data已经是json对象 //以下其他操作同第一种情况 $.each(data.root,function(idx,item){ if(idx==0){ return true;//同countinue,返回false同break } alert(name:+item.name+,value:+item.value); }); });
二、jquery解析json对象:
jquery提供了另一种方法“parsejson”,这需要一个标准的json字符串,并返回生成的javascript对象。让我们来看看语法:
复制代码 代码如下:
data = $.parsejson(string);
看看它是如何运用的到实际开发中的:
jquery.ajax({ url: dataurl, success: function(results) { var parsedjson = jquery.parsejson(results); alert(parsedjson.name); } });
补充:
jquery解析json数据完整实例:
var data= { root: [ {name:'1',value:'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:'商洛市'} ] }; //data为字符串类型 则要将字符串类型转换成json数据类型var jsondatas=eval((+data+));$.each(jsondatas.root,function(i,n){alert(name+n.name+value+n.value);})//以下为数组类型字符串 转换成json 字符串 解析//数组形式的json字符串 var jsondata=[{name:'1',value:'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:'商洛市'}];var json=eval(jsondata);$.each(json,function(i,n){alert(json[i].name);alert(json[i].value);//根据索引取值});//json数据字符 不需要转换var json={products:[ {orderid:11077,customerid:rattc}, {orderid:11078,customerid:ratt} ], img:[{id:12345,url :image/1.jpg} ]}; $.each(json.products,function(i,n){ alert(n.orderid);})
一般处理文件(handler.ashx)
if (context.request.querystring[method] != null) { string method = context.request.querystring[method].tostring(); if (method == getlist) { string str = configurationmanager.connectionstrings[connectionstring].connectionstring; sqlconnection conn = new sqlconnection(str); conn.open(); sqlcommand cmd = new sqlcommand(); cmd.connection = conn; cmd.commandtext = select proid,proname,url from project where adress = '哈尔滨'; dataset ds = new dataset(); sqldataadapter da = new sqldataadapter(cmd); da.fill(ds); string sb = createjsonparameters(ds.tables[0]); context.response.clearcontent(); context.response.write(sb.tostring()); context.response.end(); } } } /// /// 构建json字符串 /// /// /// public string createjsonparameters(datatable dt) { system.text.stringbuilder sb = new system.text.stringbuilder(); if (dt != null && dt.rows.count > 0) { sb.append([); for (int i = 0; i < dt.rows.count; i++) { sb.append({); for (int j = 0; j < dt.columns.count; j++) { //如果值不是最后一个则添加逗号分隔 if (j < dt.columns.count - 1) { sb.append(/ + dt.columns[j].columnname.tostring() + /: + / + dt.rows[i][j].tostring() + /,); } //如果值为最后个字符则不添加逗号 else if (j == dt.columns.count - 1) { sb.append(/ + dt.columns[j].columnname.tostring() + /: + / + dt.rows[i][j].tostring() + /); } } //如果为最后一个值的话 则不添加逗号 if (i == dt.rows.count - 1) { sb.append(}); } else { sb.append(},); } } sb.append(]); return sb.tostring(); } else { return null; } }
$.ajax ( { type: post, url: handler.ashx?method=getlist, async: false,//true表示异步 false表示同步 contenttype: application/json, datatype: 'json', success: function(result) { var temp=eval(result); //通过javascript来解析返回数组字符串 for (var i = 0; i < temp.length; i++) { o.innerhtml += 项目名称: + result[i].proname +
网址: + result[i].url +
; datas += 项目名称: + result[i].proname +
网址: + result[i].url +
; } tiny.box.show(datas, 0, 0, 0, 1); }});
希望本文所述对大家jquery程序设计有所帮助。
