A.NET框架编程之JSON序列化剖析(2)_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.NET框架编程之JSON序列化剖析(2)

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:序列剖析编程框架
黑客防线网安网讯:    User usr = new User();usr.FirstName = "John"usr.LastName = "Smith";  当把上面数据序列化成JSON格式的文本时,最终会得到如下所示的形式:{ FirstName : "John"LastName : "Smith...

    User usr = new User();
usr.FirstName = "John"
usr.LastName = "Smith";

  当把上面数据序列化成JSON格式的文本时最终会得到如下所示的形式:

{ FirstName : "John"
LastName : "Smith" }

 

  借助于JavaScript内置支持的方法eval()或者ASP.NET AJAX提供的Sys.Serialization.JavaScriptSerializer类我们可以在JavaScript代码中实现JSON文本串的反序列化(即再还原成最初的对象形式)

  在本文中,我们将专注于讨论使用ASP.NET AJAX提供的特有类来实现把一个JavaScript对象序列化为文本串,然后发送到服务器端,以及如何使用服务器端类JavaScriptSerializer把JSON文本串反序列化成原始的对象数据
  二、实现序列/反序列化的关键—JavaScriptSerializer
  实现序列化及反序列化的对象是JavaScriptSerializer。下面,我们来具体地看一下这个对象的成员定义情况:

  

public class JavaScriptSerializer
{
    //字段
    internal const int DefaultMaxJsonLength = 0x200000;
    internal const int DefaultRecursionLimit = 100;
    internal const string ServerTypeFieldName = "__type";

    //方法
    static JavaScriptSerializer();
    public JavaScriptSerializer();
    public JavaScriptSerializer(JavaScriptTypeResolver resolver);
    public T ConvertToType(object obj);
    public T Deserialize(string input);
    public object DeserializeObject(string input);
    public void RegisterConverters(IEnumerable converters);
    public string Serialize(object obj);
    public void Serialize(object obj, StringBuilder output);

    //属性
    public int MaxJsonLength { get; set; }
    public int RecursionLimit { get; set; }
    internal JavaScriptTypeResolver TypeResolver { get; }
}

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

  此外,通过上面代码也可以看出,对象将被序列化为一个StringBuilder对象,最后返回相应的字符串数据。其实,主要的工作是在私有方法SerializeValue()中完成的。在我们讨论这个方法之前,首先注意到,JavaScriptSerializer对象使用了JavaScriptTypeResolver对象。这个JavaScript类型解析器负责实现在字符串类型与其他类型之间的相互转换;当序列化定制对象时这一功能是非常重要的。还应注意的是,__type属性将被包含于JSON序列化文本中,以便标识对象的类型。之后,客户端会把JSON文本反序列化为原始的对象形式。

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

  public abstract class JavaScriptTypeResolver
{
    //方法
    protected JavaScriptTypeResolver();
    public abstract&

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14376-1.html
网站维护教程更新时间:2012-03-30 05:47:37  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer