首先需要注意的是,如果嵌套的对象数目大于JSON数据类型中所定义的值100的话,序列化过程将会失败。显然,如果序列定义的话序列化后的字符串的长度超出MaxJsonLength属性所定义的值0x200000(即十进制的2,097,152)的话,序列化200000 length 十进制过程也会失败。
此外,通过上面代码也可以看出,对象将被序列化为一个序列可以代码StringBuilder对象,最后返回相应的字符串数据。其实,主要的工作是stringbuild 字符串主要在私有方法SerializeValue()中完成的。在我们讨论这个方法之前,首先serializevalu 方法我们注意到,JavaScriptSerializer对象使用了JavaScriptTypeResolver对象。
这个JavaScript类型解析器负责实现在字符串类型与其他类型之间javascript 字符串实现的相互转换;当序列化定制对象时这一功能是非常重要的。序列非常转换还应注意的是,__type属性将被包含于JSON数据类型中,以便标识对象的类型。之后,客户端会把JSON数据类型为原始的对象形式。
JavaScriptTypeResolver对象包括两个public类型的方法,一个负责把原始类型解析public 包括方法为字符串类型,另一个则负责把字符串解析为原始类型。字符串原始负责这个类的原型定义如下所示:
显然,上面这个JavaScriptTypeResolver类是一个抽象基类;因此,必须通过其他因此上面必须对象进一步派生使用,从而最终实现在原始类型与字符串进一步字符串实现之间的相应解析。现在,我们可以使用的对象是SimpleTypeResolver,而且我们可以使用JSON数据类型也正好实现了上面所要求实现的方法—使用System.Type对象实现system 方法要求字符串描述形式与原始Type对象之间的相互解析。请看下面字符串下面描述的例子:
最后,JavaScriptSerializer对象还有可能使用JavaScriptConverter对象,因为内置的序列化过javascriptseri 序列最后程无法实现对于所有可用数据类型的序列化。在这种情况序列这种实现下,可以从抽象基类JavaScriptConverter对象派生一个子类,由它来实现特可以实现派生定类型数据的序列/反序列化。
可以使用JavaScriptSerializer对象的RegisterConverters()方法注册一个转换器对象。此方法把registerconvert javascriptseri 转换器所有的转换器对象存储在一个Dictionary对象中;针对多种不同的数dictionari 转换器存储据类型的转换器经注册后都会存储在此字典对象中。概括转换器注册存储来看,这个Dictionary对象被定义如表格1所示的一些JSON数据类型。