使用.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  }

我们现在在一个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;
        
// dot.gif.使用User对象
        context.Response.Write( " OK " );
        context.Response.ContentType 
=   " text/plain " ;
    }
 
    
public   bool  IsReusable {
        
get  {
            
return   false ;
        }
    }
}

转载于:https://www.cnblogs.com/cdutedu/archive/2009/08/24/1553064.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值