Json在.NET中的解析
Json是一种类XML的存储数据的格式,{}代表保存的一个对象,其中有多个键值对name:value,[]代表数组,一个数组可以保存多个对象。
{ "employees": [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush" }, { "firstName":"Thomas" , "lastName":"Carter" } ] }
一、前台将Json传给后台解析
前台利用ajax技术异步刷新页面,将数据传给后台:
$.ajax({ type: "post", //post或get,是数据传递的方式 url: "Group.aspx/ChangeGroup", //将数据传送给哪个页面或哪个方法 contentType: "application/json;charset=utf-8", //数据的编码方法 dataType: "json", //数据的类型 data: "{\"data\":\"{'list':[117042815055358939],'id':2}\"}", //数据本体 success: function (res) { alert(res.d); }, error: function (xmlReq, err, c) { alert("error:" + err); } //传递数据成功或失败对应的方法 });
后台为了解析数据,要先对应数据的内容给每一个对象建立对应的类。如果是多层的Json数据,则要新建若干嵌套类。
public class data { public List<string>list; public int id;
public data()
{
list = new List<string>();
}
}
接下来开始解析,这是反序列化操作,目的是将字符串转换为对象。
using System.Web.Script.Serialization;
public string analysis(string str)
{
JavaScriptSerializer ser = new JavaScriptSerializer(); data main = ser.Deserialize(str); return main;
}
反之则是序列化,目的则是将对象转换为字符串。
JavaScriptSerializer ser = new JavaScriptSerializer(); String str = ser.Serialize(obj); //同样支持对象数组
更为简单的操作是直接取出值。
int id = Request.QueryString["id"];
二、服务器将Json传递给前台显示
var obj=eval("("+data+")");
在Json字符串两边加上括号是为了强制eval函数将data转换为对象,而不是作为语句块来处理。
如果使用$.getJSON()函数,则返回的已经是对象,不用进行字符串向对象的转换。