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()函数,则返回的已经是对象,不用进行字符串向对象的转换。