收藏本站 收藏本站
积木网首页 - 软件测试 - 常用手册 - 站长工具 - 技术社区
积木学院 > 网页设计 > XML > 正文

描述对象数据类型JSON字符串方法

来源:互联网 日期:2013-04-02 07:30

当对象实例创建结束,我们就可以调用DeserializeInternal()方法。这个方法具体负责解析JSON序列化字符串并创建相应的原始类型的对象。于是对象定义中会包括一个字符串常量__type,它的后面跟着的是描述对象数据类型的JSON字符串

如果这个对象通过一个web服务方法返回,那么此对象将在内部处理器RestHandler类的InvokeMethod()方法中被自动序列化。然而在上面的例子中,我们却在我们的Web页面的典型的Page.Page_Load()方法内部使用这些对象。

因此,我们应该创建这些对象并且自动地使用前面已经讨论的JavaScriptSerializer对象对它们进行序列化。例如,我们来考虑使用如下代码来序列化一个对象的情形:

  1. JavaScriptSerializer jsSerializer = new   
  2. JavaScriptSerializer(new SimpleTypeResolver());   
  3. Customer cust = new Customer();   
  4. cust.FirstName = "Joe";   
  5. cust.EmailAddress = "jknown@domain.com";   
  6. cust.PhoneNumbers = new Phone();   
  7. cust.PhoneNumbers.HomePhone = "888-888-8888";   
  8. string serializedText = jsSerializer.Serialize(cust); 

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

  1. {"__type":"Customer, App_Web_plrzlwbj,   
  2. Version=0.0.0.0, Culture=neutral,   
  3. PublicKeyToken=null","FirstName":"Joe","LastName":null,   
  4. "EmailAddress":jknown@domain.com,   
  5. "PhoneNumbers":{"__type":"Phone, App_Web_plrzlwbj, Version=0.0.0.0,   
  6. Culture=neutralPublicKeyToken=null",   
  7. "HomePhone":"888-888-8888","WorkPhone":null}} 

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

  1. public class Customer   
  2. {   
  3.      private string _firstName;   
  4.      public string FirstName   
  5.      {   
  6.          get { return _firstName; }   
  7.          set { _firstName = value; }   
  8.      }   
  9.      private string _lastName;   
  10.      public string LastName   
  11.      {   
  12.          get { return _lastName; }   
  13.          set { _lastName = value; }   
  14.      }   
  15.      private string _email;   
  16.      public string EmailAddress   
  17.      {   
  18.          get { return _email; }   
  19.          set { _email = value; }   
  20.      }   
  21.      private Phone _phoneNumber;   
  22.      public Phone PhoneNumbers   
  23.      {   
  24.          get { return _phoneNumber; }   
  25.          set { _phoneNumber = value; }   
  26.      } }  

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


推荐阅读

 

热点信息

 
强悍的草根IT技术社区,这里应该有您想要的! 友情链接:b2b电子商务
Copyright © 2010 Gimoo.Net. All Rights Rreserved  京ICP备05050695号