- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0 | 
    nbsp;Type ResolveType(string id); 
    public abstract string ResolveTypeId(Type type); 
} 
  显然,上面这个JavaScriptTypeResolver类是一个抽象基类;因此,必须通过其他对象进一步派生使用,从而最终实现在原始类型与字符串之间的相应解析。现在,我们可以使用的对象是SimpleTypeResolver,而且它也正好实现了上面所要求实现的方法—使用System.Type对象实现字符串描述形式与原始Type对象之间的相互解析。请看下面的例子:
  public override Type ResolveType(string id) 
{ 
    return Type.GetType(id); 
} 
public override string ResolveTypeId(Type type) 
{ 
    if (type == null) 
    { 
        throw new ArgumentNullException("type"); 
    } 
    return type.AssemblyQualifiedName; 
} 
  最后,JavaScriptSerializer对象还有可能使用JavaScriptConverter对象,因为内置的序列化过程无法实现对于所有可用数据类型的序列化。在这种情况下,可以从抽象基类JavaScriptConverter对象派生一个子类,由它来实现特定类型数据的序列/反序列化。可以使用JavaScriptSerializer对象的RegisterConverters()方法注册一个转换器对象。此方法把所有的转换器对象存储在一个Dictionary对象中;针对多种不同的数据类型的转换器经注册后都会存储在此字典对象中。概括来看,这个Dictionary对象被定义如表格1所示的一些数据类型。
 
表1—可序列化的数据类型汇总
原始数据类型 被序列化后的形式 
null或DBNull "null" 
string 带引号的字符串 
char 如果是‘\0’则转换为"null";否则,序列化为带引号的字符串 
bool "true"或"false" 
DateTime "\/Date(ticks since 12:00AM 1970/01/01 UTC)\/" 
Guid “string representation”: sb.Append("\"").Append(guid.ToString()).Append("\""); 
Uri sb.Append("\"").Append(uri.GetComponents(UriComponents.SerializationInfoString,UriFormat.UriEscaped)).Append("\""); 
double sb.Append(((double) o).ToString("r", CultureInfo.InvariantCulture)); 
float sb.Append(((float) o).ToString("r", CultureInfo.InvariantCulture)); 
primitive或decimal IConvertible convertible = o as IConvertible; 
sb.Append(convertible.ToString(CultureInfo.InvariantCulture)); 
Enum sb.Append((int) o); 
IDictionary 转换为JSON文本串,例如:
{"Key1":Value1,"Key2":Value2 ... } 
IEnumerable 转换为JSON文本串,例如:
{"Key1":Value1,"Key2":Value2 ... } 
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |