使用.NET框架自帶的Json序列化類

作者: 張良  來源: 博客園  發布時間: 2009-08-25 13:08  閱讀: 4037 次  推薦: 0   原文鏈接   [收藏]  
主要用到的類: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 { getset; }
 7     [DataMember]
 8     public string Name { getset; }
 9     public int Age { getset; }
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;
        }
    }
}

看輸出結果:

{"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;
        }
    }
}
0
0
 
標簽:Json
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()