zoukankan      html  css  js  c++  java
  • 使用.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 { 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;
            }
        }
    }
  • 相关阅读:
    基础安全术语科普(四)——RFID
    基础安全术语科普(三)——RAT
    基础安全术语科普(二)——反病毒软件工作原理
    java中的变量
    递归调用
    一个男人关心的东西 决定了他的层次
    安装环境时,请大家不要选择PHP5.3.6
    WordPress URL Rewrite | WP URL 重写组件
    如何在ASP.NET网页间传递数据
    Oracle中的for和while循环
  • 原文地址:https://www.cnblogs.com/cdutedu/p/1553064.html
Copyright © 2011-2022 走看看