使用.NET框架自帶的Json序列化類
主要用到的類:DataContractJsonSerializer,該類被申明在System.Runtime.Serialization.Json命名空間下,而System.Runtime.Serialization.Json命名空間是被放置在System.ServiceModel.Web.dll程序集里,因此我們要用到DataContractJsonSerializer類,首先應添加對System.ServiceModel.Web的引用,然后添加System.Runtime.Serialization.Json命名空間,注意DataContractJsonSerializer序列化的方式是采用數據契約序列化,因此我們可以通過DataMemberAttribute來控制那些被序列化,那些不被序列化。
例如,我們這里有一個類:
例如,我們這里有一個類:
1 [DataContract]
2 public class User
3 {
4 public User() { }
5 [DataMember]
6 public bool IsMember { get; set; }
7 [DataMember]
8 public string Name { get; set; }
9 public int Age { get; set; }
10 }
2 public class User
3 {
4 public User() { }
5 [DataMember]
6 public bool IsMember { get; set; }
7 [DataMember]
8 public string Name { get; set; }
9 public int Age { get; set; }
10 }
我們現在在一個ashx文件里創建一個實例并將其序列化:
public class JsonWriter : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
User user = new User() { IsMember = true, Name = "Zhang Liang", Age = 24 };
serializer.WriteObject(context.Response.OutputStream, user);
context.Response.ContentType = "text/plain";
}
public bool IsReusable {
get {
return false;
}
}
}
{
public void ProcessRequest (HttpContext context)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
User user = new User() { IsMember = true, Name = "Zhang Liang", Age = 24 };
serializer.WriteObject(context.Response.OutputStream, user);
context.Response.ContentType = "text/plain";
}
public bool IsReusable {
get {
return false;
}
}
}
看輸出結果:
{"IsMember":true,"Name":"Zhang Liang"}
反序列化:
public class JsonWriter : IHttpHandler
{
public void ProcessRequest (HttpContext context)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
User user = serializer.ReadObject(context.Request.InputStream) as User;
//
.使用User對象
context.Response.Write("OK");
context.Response.ContentType = "text/plain";
}
public bool IsReusable {
get {
return false;
}
}
}
{
public void ProcessRequest (HttpContext context)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(User));
User user = serializer.ReadObject(context.Request.InputStream) as User;
//

context.Response.Write("OK");
context.Response.ContentType = "text/plain";
}
public bool IsReusable {
get {
return false;
}
}
}
全站熱搜