随笔 - 13  文章 - 0 评论 - 5 trackbacks - 0

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

 

posted on 2009-08-13 11:12 yuliang0912 阅读(...) 评论(...) 编辑 收藏