A.NET AJAX框架编程之JSON序列化剖析(5)_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.NET AJAX框架编程之JSON序列化剖析(5)

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:序列剖析编程框架
黑客防线网安网讯:    处理器RestHandler类的InvokeMethod()方法中被自动序列化。然而在上面的例子中,我们却在我们的Web页面的典型的Page.Page_Load()方法内部使用这些对象。因此,我们应该创建这些对象并且...

    处理器RestHandler类的InvokeMethod()方法中被自动序列化然而在上面的例子中我们却在我们的Web页面的典型的Page.Page_Load()方法内部使用这些对象因此我们应该创建这些对象并且自动地使用前面已经讨论的JavaScriptSerializer对象对它们进行序列化。例如,我们来考虑使用如下代码来序列化一个对象的情形:

JavaScriptSerializer jsSerializer = new 
JavaScriptSerializer(new SimpleTypeResolver());
Customer cust = new Customer();
cust.FirstName = "Joe";
cust.EmailAddress = "jknown@domain.com";
cust.PhoneNumbers = new Phone();
cust.PhoneNumbers.HomePhone = "888-888-8888";
string serializedText = jsSerializer.Serialize(cust);


  根据前面的分析,JavaScriptSerializer对象已经使用SimpleTypeResolver初始化完毕(其中,SimpleTypeResolver负责把要序列化的对象转换成一个字符串形式)。下面,我们来看一下序列化之后的JSON文本:

{"__type":"Customer, App_Web_plrzlwbj,
Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null","FirstName":"Joe","LastName":null,
"EmailAddress":jknown@domain.com,
"PhoneNumbers":{"__type":"Phone, App_Web_plrzlwbj, Version=0.0.0.0, 
Culture=neutral, PublicKeyToken=null",
"HomePhone":"888-888-8888","WorkPhone":null}} 


  注意,其中的PhoneNumbers属性属于定制类型—Phone。因此,当被序列化时,PhoneNumbers属性的值本身就是一个JSON对象,它正是Phone对象的序列化之后的形式。再次强调的是,这里添加了类型标记,以备反序列化时使用,从而确保创建相应类型的原始对象。

  接下来,再让我们来看一下反序列化的过程。

  反序列化过程是借助于JavaScriptObjectDeserializer对象实现的。当创建一个对象的实例时,相应的JSON文本串将会以参数方式传递到这个类的构造器中。当对象实例创建结束,我们就可以调用DeserializeInternal()方法。这个方法具体负责解析JSON序列化字符串并创建相应的原始类型的对象。

  上面分析了反序列化的内部实现。但是,作为使用JavaScriptSerializer类的程序员,要实现一个JSON字符串的反序列化,我们只需简单地调用JavaScriptSerializer对象的Deserialize()方法。这个方法的返回值正相应于原始对象的一个实例,而且相应的属性也被进行了正确的赋值。我们不妨来考虑下面的代码:

  Customer cust = jsSerializer.Deserialize(serializedText);

  在此,不再给出变量cust的内容展现,有兴趣的读者可以自动跟踪分析。
  四、关于客户端JavaScriptSerializer对象
  ASP.NET AJAX客户端框架中的Microsoft Ajax Library也提供了一个Sys.Serialization.JavaScriptSerializer对象,从而方便在基于非ASP.NET平台上的ASP.NET AJAX编程中的JSON数据的编码与解码。这个JavaScriptSerializer对象暴露了两个方法:serialize和deserialize。

  其中,serialize方法接受一个JavaScript对象形式的参数,此函数返回一个描述JSON数据的字符串,例如:

  var man = {firstName: 'John', lastName: 'Mike'};

  var s1 = Sys.Serialization.JavaScriptSerializer;

  var json = s1.serialize(man);

  在此,变量json中存储了一个字符串,这个串中相应于变量man中存储的对象的JSON描述形式。

  而deserialize方法执行与serialize方法相反的任

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14257-1.html
网站维护教程更新时间:2012-03-30 05:41:13  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer