• Alice   2014/7/13 12:02:00
  • ASP.NET中如何使用JavaScriptSerializer实现序列化与反序列化得到JSON
  • 关键字: JSON 序列化 反序列化
  • 最近项目开始比较多的使用JSON来传递数据了,首先介绍下什么是JSON吧,JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
     
    在ASP.NET AJAX中,客户端的序列化与反序列能力由Sys.Serialization.JavaScriptSerializer类的serialize和 deserialize两个静态方法提供。在服务器端,所有的序列化与反序列化能力,包括类型之间的转换,对于开发人员来说都是由 JavaScriptSerializer类的几个方法实现的。
     
    在JavaScriptSerializer中,我们可以看到下面可以使用的方法或者构造函数,它们都是实例方法:

    Member Description
    JavaScriptSerializer() 构造函数,用于创建一个新的JavaScriptSerializer对象,不指定JavaScriptTypeResolver
    JavaScriptSerializer(JavaScriptTypeResolver) 构造函数,用于创建一个新的JavaScriptSerializer对象,并使用指定的JavaScriptTypeResolver来映射特定类型与标识字符串。
    ConvertToType<T>(Object) 将给定对象转化成类型T。
    Deserialize<T>(String) 将JSON字符串转化为类型T。
    DeserializeObject(String) 将JSON字符串转化为一个对象。
    MaxJsonLength 获取或者设置序列化时能够接受的JSON字符串的最大长度。
    RecursionLimit 获取或者设置在反序列化JSON字符串时递归的最大深度。
    RegisterConverters(IEnumerable<JavaScriptConverter>) 注册序列化过程中使用的JavaScriptConveter对象。
    Serialize(Object) 将一个对象序列化成JSON字符串。
    Serialize(Object, StringBuilder) 将一个对象序列化到一个StringBuilder中。


    这里我只提供一个简单的demo看看效果,后面我再陆续介绍吧,首先创建一个用户实体类:
     

    1
    2
    3
    4
    5
    6
    public class UserInfo  {
           public Int32 Id { getset; }
           public String UserName { getset; }
           public DateTime Time { getset; } 
           public bool Gender { getset; }
      

    接下来在Page_Load里面写下面代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    protected void Page_Load(object sender, EventArgs e)   {
           UserInfo info = new UserInfo();
           info.Id = 1;
           info.UserName = "http://www.hello-code.com";
           info.Time = DateTime.Now;
           info.Gender = true;
           System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
           String strJson = jss.Serialize(info);
           Response.Write(strJson);
             //输出结果:
           //{"Id":1,"UserName":"http://www.hello-code.com","Time":"\/Date(1297950721668\/","Gender":true}
            UserInfo info2 = jss.Deserialize<UserInfo>(strJson); 
            Response.Write(String.Format("<br/>{0}<br/>{1}<br/>{2}<br/>{3}", info2.Id, info2.UserName, info2.Time, info2.Gender));
           Response.End();
           //结果:
          //1
          //2014/7/13 14:00:29
          //True  }

大家的回答
  • 还没有人回答这个问题哦,亲,快来帮帮TA吧
  •   我来回答
  • 注册用户登录后才能发表评论,请 登录注册
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款