本文实例讲述了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();} }}/// <summary>/// 构建JSON字符串/// </summary>/// <param name="dt"></param>/// <returns></returns>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 + "<br/>网址:<a href=" + result[i].url + " mce_href=" + result[i].url + " target="_blank">" + result[i].url + "</a><br/>";datas += "项目名称:" + result[i].ProName + "<br/>网址:<a href=" + result[i].url + " mce_href=" + result[i].url + " target="_blank">" + result[i].url + "</a><br/>"; }TINY.box.show(datas, 0, 0, 0, 1); }});希望本文所述对大家jQuery程序设计有所帮助。