- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0 |
处理器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方法相反的任
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |