|
|
|
ASP.NET AJAX框架编程之JSON序列化剖析(3)http://www.sina.com.cn 2008年04月11日 15:34 天极yesky
三、序列/反序列化举例 现在,让我们通过一个例子来具体分析一下序列化过程。首先,请考虑下面定义的Customer对象: public class Customer 如果这个对象通过一个web服务方法返回,那么此对象将在内部处理器RestHandler类的InvokeMethod()方法中被自动序列化。然而在上面的例子中,我们却在我们的Web页面的典型的Page.Page_Load()方法内部使用这些对象。因此,我们应该创建这些对象并且自动地使用前面已经讨论的JavaScriptSerializer对象对它们进行序列化。例如,我们来考虑使用如下代码来序列化一个对象的情形: JavaScriptSerializer jsSerializer = new 根据前面的分析,JavaScriptSerializer对象已经使用SimpleTypeResolver初始化完毕(其中,SimpleTypeResolver负责把要序列化的对象转换成一个字符串形式)。下面,我们来看一下序列化之后的JSON文本: {"__type":"Customer, App_Web_plrzlwbj, 注意,其中的PhoneNumbers属性属于定制类型—Phone。因此,当被序列化时,PhoneNumbers属性的值本身就是一个JSON对象,它正是Phone对象的序列化之后的形式。再次强调的是,这里添加了类型标记,以备反序列化时使用,从而确保创建相应类型的原始对象。 接下来,再让我们来看一下反序列化的过程。 反序列化过程是借助于JavaScriptObjectDeserializer对象实现的。当创建一个对象的实例时,相应的JSON文本串将会以参数方式传递到这个类的构造器中。当对象实例创建结束,我们就可以调用DeserializeInternal()方法。这个方法具体负责解析JSON序列化字符串并创建相应的原始类型的对象。 上面分析了反序列化的内部实现。但是,作为使用JavaScriptSerializer类的程序员,要实现一个JSON字符串的反序列化,我们只需简单地调用JavaScriptSerializer对象的Deserialize()方法。这个方法的返回值正相应于原始对象的一个实例,而且相应的属性也被进行了正确的赋值。我们不妨来考虑下面的代码: Customer cust = jsSerializer.Deserialize(serializedText); 在此,不再给出变量cust的内容展现,有兴趣的读者可以自动跟踪分析。
【发表评论 】
不支持Flash
|