通常,我们需要使用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对象!