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

开发
针对多种不同的数据类型的转换器经注册后都会存储在此字典对象中。概括来看,JSON数据类型对象被定义如表格1所示的一些数据类型。

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

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

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

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

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

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

  1. public override Type ResolveType(string id)  
  2.  
  3. {  
  4.  
  5.      return Type.GetType(id);  
  6.  
  7. }  
  8.  
  9. public override string ResolveTypeId(Type type)  
  10.  
  11. {  
  12.  
  13.      if (type == null)  
  14.  
  15.      {  
  16.  
  17.          throw new ArgumentNullException("type");  
  18.  
  19.      }  
  20.  
  21.      return type.AssemblyQualifiedName;  
  22.  

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

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

责任编辑:chenqingxiang 来源: 电子工业出版社
相关推荐

2010-01-05 17:43:29

JSON字符串

2010-01-06 14:14:11

JSON版本

2011-05-26 13:54:04

Json

2010-01-13 17:32:02

C++数据类型

2010-01-07 17:41:19

JSON定义法

2010-08-25 13:36:53

DB2Oracle

2023-11-08 18:05:06

Python类型技巧

2010-08-26 09:44:42

db2数据类型

2010-01-06 15:18:51

Json插件

2019-08-12 11:40:48

数据库SQLite3数据类型

2010-01-08 09:03:38

返回JSON数据

2010-09-06 17:35:43

SQL函数

2017-11-16 09:03:56

数据库MySQLJSON

2010-01-07 16:55:06

JSON字符串

2010-01-08 14:41:24

JSON 缓存数据

2010-08-10 17:17:59

2021-04-16 07:19:04

Hive数据类型Hql

2009-12-11 14:03:30

PHP获取字段数据类型

2016-08-18 14:13:55

JavaScript基本数据引用数据

2010-01-05 16:33:35

使用JSON
点赞
收藏

51CTO技术栈公众号