您的位置:首页 > Web前端 > JavaScript

ASP.NET C#使用JavaScriptSerializer实现序列化与反序列化得到JSON

2013-06-28 14:42 1126 查看
最 近项目开始比较多的使用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";[/code] 
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}[/code] 
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  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐