jquery解析json格式数据的方法(对象、字符串)
本文实例讲述了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
代码如下:
vardata=" { 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("https://www.nhooo.com/",{param:"sanic"},function(data){ //此处返回的data已经是json对象 //以下其他操作同第一种情况 $.each(data.root,function(idx,item){ if(idx==0){ returntrue;//同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){ varparsedJson=jQuery.parseJSON(results); alert(parsedJson.name); } });
补充:
jquery解析json数据完整实例:
vardata=" { 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数据类型 varjsondatas=eval("("+data+")"); $.each(jsondatas.root,function(i,n){ alert("name"+n.name+"value"+n.value); } ) //以下为数组类型字符串转换成json字符串解析 //数组形式的json字符串 varjsondata="[{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:'商洛市'}]"; varjson=eval(jsondata); $.each(json,function(i,n){ alert(json[i].name); alert(json[i].value);//根据索引取值 }); //json数据字符不需要转换 varjson={"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) { stringmethod=context.Request.QueryString["method"].ToString(); if(method=="getlist") { stringstr=ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnectionconn=newSqlConnection(str); conn.Open(); SqlCommandcmd=newSqlCommand(); cmd.Connection=conn; cmd.CommandText="selectProID,ProName,urlfromProjectwhereAdress='哈尔滨'"; DataSetds=newDataSet(); SqlDataAdapterda=newSqlDataAdapter(cmd); da.Fill(ds); stringsb=CreateJsonParameters(ds.Tables[0]); context.Response.ClearContent(); context.Response.Write(sb.ToString()); context.Response.End(); } } } ///<summary> ///构建JSON字符串 ///</summary> ///<paramname="dt"></param> ///<returns></returns> publicstringCreateJsonParameters(DataTabledt) { System.Text.StringBuildersb=newSystem.Text.StringBuilder(); if(dt!=null&&dt.Rows.Count>0) { sb.Append("["); for(inti=0;i<dt.Rows.Count;i++) { sb.Append("{"); for(intj=0;j<dt.Columns.Count;j++) { //如果值不是最后一个则添加逗号分隔 if(j<dt.Columns.Count-1) { sb.Append("/""+dt.Columns[j].ColumnName.ToString()+"/":"+"/""+dt.Rows[i][j].ToString()+"/","); } //如果值为最后个字符则不添加逗号 elseif(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("]"); returnsb.ToString(); } else{returnnull;} }
$.ajax ( { type:"POST", url:"Handler.ashx?method=getlist", async:false,//true表示异步false表示同步 contentType:"application/json", dataType:'json', success:function(result){ vartemp=eval(result); //通过javascript来解析返回数组字符串 for(vari=0;i<temp.length;i++) { o.innerHTML+="项目名称:"+result[i].ProName+"<br/>网址:<ahref="+result[i].url+"mce_href="+result[i].url+"target='_blank'>"+result[i].url+"</a><br/>"; datas+="项目名称:"+result[i].ProName+"<br/>网址:<ahref="+result[i].url+"mce_href="+result[i].url+"target='_blank'>"+result[i].url+"</a><br/>"; } TINY.box.show(datas,0,0,0,1); } });
希望本文所述对大家jQuery程序设计有所帮助。