详数JSON数据类型的使用于说明技巧

首先需要注意的是,如果嵌套的对象数目大于JSON数据类型中所定义的值100的话,序列化过程将会失败。显然,如果序列化后的字符串的长度超出MaxJsonLength属性所定义的值0x200000(即十进制的2,097,152)的话,序列化过程也会失败。

创新互联建站长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为十堰郧阳企业提供专业的做网站、网站制作十堰郧阳网站改版等技术服务。拥有10多年丰富建站经验和众多成功案例,为您定制开发。

此外,通过上面代码也可以看出,对象将被序列化为一个StringBuilder对象,***返回相应的字符串数据。其实,主要的工作是在私有方法SerializeValue()中完成的。在我们讨论这个方法之前,首先注意到,JavaScriptSerializer对象使用了JavaScriptTypeResolver对象。#t#

这个JavaScript类型解析器负责实现在字符串类型与其他类型之间的相互转换;当序列化定制对象时这一功能是非常重要的。还应注意的是,__type属性将被包含于JSON数据类型中,以便标识对象的类型。之后,客户端会把JSON数据类型为原始的对象形式。

JavaScriptTypeResolver对象包括两个public类型的方法,一个负责把原始类型解析为字符串类型,另一个则负责把字符串解析为原始类型。这个类的原型定义如下所示:

 
 
  1. public abstract class JavaScriptTypeResolver
  2. {
  3.      //方法
  4.      protected JavaScriptTypeResolver();
  5.      public abstract Type ResolveType(string id);
  6.      public abstract string ResolveTypeId(Type type);
  7. }

显然,上面这个JavaScriptTypeResolver类是一个抽象基类;因此,必须通过其他对象进一步派生使用,从而最终实现在原始类型与字符串之间的相应解析。现在,我们可以使用的对象是SimpleTypeResolver,而且JSON数据类型也正好实现了上面所要求实现的方法—使用System.Type对象实现字符串描述形式与原始Type对象之间的相互解析。请看下面的例子:

 
 
  1. public override Type ResolveType(string id)
  2. {
  3.      return Type.GetType(id);
  4. }
  5. public override string ResolveTypeId(Type type)
  6. {
  7.      if (type == null)
  8.      {
  9.          throw new ArgumentNullException("type");
  10.      }
  11.      return type.AssemblyQualifiedName;
  12. }

***,JavaScriptSerializer对象还有可能使用JavaScriptConverter对象,因为内置的序列化过程无法实现对于所有可用数据类型的序列化。在这种情况下,可以从抽象基类JavaScriptConverter对象派生一个子类,由它来实现特定类型数据的序列/反序列化。

可以使用JavaScriptSerializer对象的RegisterConverters()方法注册一个转换器对象。此方法把所有的转换器对象存储在一个Dictionary对象中;针对多种不同的数据类型的转换器经注册后都会存储在此字典对象中。概括来看,这个Dictionary对象被定义如表格1所示的一些JSON数据类型。

分享标题:详数JSON数据类型的使用于说明技巧
标题链接:http://www.gawzjz.com/qtweb/news23/170573.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联