通常,我们需要使用Ajax获取一连串的信息,如果我们直接使用文本格式,需要把信息拆分开,比如使用split+格式字符的方式去拆分,但是,如果我们查询的信息中包含了用户差分的格式字符时,得到的数据就会出错,如果使用XML的话,又显得太麻烦,所以,很多时候使用Json是一种很不错的方式;
比如,我们需要用Ajax获取一组用户信息,其中包括username,age,sex,address等等;那么组合成的Json字符串为:
{username :’yuliang’,age:21,sex:’男’,address:’深圳福田’}
调用示例:
--jquery方式-- function getUserInfo(id) { if (isNaN(id)) { return;} $.ajax({ type: "get", url: "AjaxCommonClass.aspx?m=getUserInfoById&id=" + id, dataType: "json", success: function(data) { $("#username").html(data.username); $("#age").html(data.age); $("#sex").html(data.sex); $("#address").html(data.address); } }); }
那么如何在后台输出Json格式的字符串呢?
最简单最原始的方式就是组合字符串:
使用System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append()方式.
最后拼装成:{username :’yuliang’,age:21,sex:’男’,address:’深圳福田’}
第二种使用.net freamwork3.0 自带封装方法(将对象序列化成JSON格式的字符串)
public static string Serialize(object obj) { if (obj == null) return null; System.Runtime.Serialization.Json.DataContractJsonSerializer s = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { s.WriteObject(ms, obj); return System.Text.Encoding.UTF8.GetString(ms.ToArray()); } }
这样,我们在传递Ajax数据时直接Response.Write(Serialize(obj))方法即可;
客户端接收到字符串后,会自动解析成JS对象!