ASP.NET AJAX框架编程之JSON序列化剖析

http://www.sina.com.cn 2008年04月11日 15:34  天极yesky

  作者:朱先忠

  ASP.NET AJAX(最初代码名为“ATLAS”)框架,作为重点支持ASP.NET开发平台的开源Ajax框架在它一出世时就受到广大.NET开发人员的青睐。在本文中,我们将专注于分析ASP.NET AJAX编程中服务器与客户端通信过程中的数据存储形式的问题。具体地说,我们将探讨一个实现序列化与反序列化的服务器端对象—JavaScriptSerializer。

  一、JSON简介

  在正式讨论JSON格式之前,首先让我们简要回忆一下XML。XML是“可扩展的标记语言”的简称,它提供了定义Web中一系列数据传输协议的方式,是文本型的,被人们誉为“完全开发Internet和Web潜力的理想方式”。

  那么,为什么ASP.NET AJAX中还要引入JSON呢?还是让我们先来观察一下例子吧。比如当前Web页面将从后台载入一些通讯录的信息,这些信息如果写成XML,可能是如下形式:

<contact>
    <friend>
        <name>Michael</name>
        <email>17bity@gmail.com</email>
        <homepage>http://www.jialing.net</homepage>
    </friend>
    <friend>
        <name>John</name>
        <email>john@gmail.com</email>
        <homepage>http://www.john.com</homepage>
    </friend>
    <friend>
        <name>Peggy</name>
        <email>peggy@gmail.com</email>
        <homepage>http://www.peggy.com</homepage>
    </friend>
</contact>

  而写成JSON形式,则会是:

[
 friend: {
   name:"Michael",
   email:"17bity@gmail.com",
   homepage:"http://www.jialing.net"
 },
 friend: {
   name:"John",
   email:"john@gmail.com",
   homepage:"http://www.jobn.com"
 },
 friend: {
   name:"Peggy",
   email:"peggy@gmail.com",
   homepage:"http://www.peggy.com"
 }
]

  相比之下,后面JSON表达方式明显更为简洁。其实,我们最关心的并不只是表达上的简单性,最重要的是如何简化DOM的解析。因为不同的浏览器中XML/SOAP解释器的实现是有所不同的,所以,解释相同的XML和SOAP格式的数据未必会一定得到一致的结果。为此,ASP.NET AJAX中特地引入了更为轻量级的JSON格式,并创建了一致的JSON解析器,再加上JavaScript本身就支持以JSON方式创建对象,所以,这一切都显然十分流畅自然和水到渠成。

  JSON,即JavaScript对象标志,如今已经成为JavaScript内置支持的数据格式,它实现了比以前的XML和SOAP更为有效的网络数据传送方式。简言之,JSON是一种基本的把对象序列化成轻量级字符串的方式,而字符串数据可以轻松地通过网络进行数据传输而且毫不失真。我们不妨再来考虑下面简单的C#类:

public class User
{
    string FirstName;
    string LastName;
}

  现在,假设定义了上面对象的如下实例:

User usr = new User();
usr.FirstName = "John"
usr.LastName = "Smith";

  当把上面数据序列化成JSON格式的文本时,最终会得到如下所示的形式:

{ FirstName : "John"
LastName : "Smith" }

  借助于JavaScript内置支持的方法eval()或者ASP.NET AJAX提供的Sys.Serialization.JavaScriptSerializer类,我们可以在JavaScript代码中实现JSON文本串的反序列化(即再还原成最初的对象形式)。

  在本文中,我们将专注于讨论使用ASP.NET AJAX提供的特有类来实现把一个JavaScript对象序列化为文本串,然后发送到服务器端,以及如何使用服务器端类JavaScriptSerializer把JSON文本串反序列化成原始的对象数据。

上一页 1 2 3 4 5 下一页
本文导航:
·JSON简介
·实现序列反序列化的关键
·序列反序列化举例
·关于客户端JavaScriptSerializer对象
·小结

发表评论 _COUNT_条
Powered By Google
不支持Flash
·城市对话改革30年 ·新浪城市同心联动 ·诚招合作伙伴 ·企业邮箱畅通无阻
不支持Flash