• ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到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中,我们可以看到下面可以使用的方法或者构造函数,它们都是实例方法:
    MemberDescription
    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看看效果,后面我再陆续介绍吧,首先创建一个用户实体类:

    public class UserInfo  {
          public Int32 Id { get; set; }
          public String UserName { get; set; }
          public DateTime Time { get; set; } 
          public bool Gender { get; set; }  }
    接下来在Page_Load里面写下面代码。
    protected void Page_Load(object sender, EventArgs e)
      {
          UserInfo info = new UserInfo();
          info.Id = 1;
          info.UserName = "猫博 http://maoblog.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://maoblog.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      //猫博 http://maoblog.com      //2011/2/17 14:00:29      //True  }
  • 相关阅读:
    敏捷开发流程的8个步骤
    PingCode Wiki ——国内最顶级的产研团队知识库产品介绍
    国内外最知名的9大工作任务管理软件盘点
    国内外最好用的18个协同办公系统盘点
    知识库的作用
    国内外好用的OKR管理工具有哪些?
    敏捷宣言及完整解读
    如何在敏捷中管理和减少技术负债?
    敏捷开发框架都有哪些
    PingCode与Jira 敏捷开发管理能力的对比
  • 原文地址:https://www.cnblogs.com/zhwl/p/3160822.html
Copyright © 2020-2023  润新知