通常,我們需要使用Ajax擷取一連串的資訊,如果我們直接使用文字格式設定,需要把資訊拆分開,比如使用split+格式字元的方式去拆分,但是,如果我們查詢的資訊中包含了使用者差
分的格式字元時,得到的資料就會出錯,如果使用XML的話,又顯得太麻煩,所以,很多時候使用Json是一種很不錯的方式;
關於Json:
JavaScript Object Notation (JSON) 是一種輕量級、基於文本、語言無關的資料交換格式。它是從ECMAScript語言標準衍生而來的;
JSON是結構化資料序列化的文字格式設定。它衍生自Javascript的對象實字,這定義在ECMAScript語言標準第三版中。JSON能夠描述四種簡單的類型(字串、數字、布爾值及
null)和兩種結構化類型(對象及數組)。字串(string)是零個或多個Unicode字元的序列。對象(object)是無次序的零個或多個名/值(name/value)對的集合,這裡的name
是string類型,value則可以是string、number、boolean、null、object或array類型。數組(array)是零個或多個value的有序序列。"object"和"array"這兩個術語來自
JavaScript規範。JSON的設計目標是使它成為小的、輕便的、文本的,而且是JavaScript的一個子集。
比如,我們需要用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對象!