zoukankan      html  css  js  c++  java
  • [转]JSON序列化与反序列化

    本文转自:http://www.cnblogs.com/ejiyuan/archive/2010/04/09/1708084.html

    方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化
     
    序列化类:Personnel
     
    
            public class Personnel
            {
                public int Id { get; set; }
                public string Name { get; set; }
            }
     
     
     
    执行序列化反序列化:
     
    
    
    
    
            protected void Page_Load(object sender, EventArgs e)
            {
                Personnel personnel = new Personnel();
                personnel.Id = 1;
                personnel.Name = "小白";
    
    
                JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
                //执行序列化
                string r1 = jsonSerializer.Serialize(personnel);
                
                //执行反序列化
                Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1);
             }
    
    
     
     
     
    r1输出结果:{"Id":1,"Name":"小白"} 
    
    可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。
     
    
            public class Personnel
            {
                [ScriptIgnore]
                public int Id { get; set; }
                public string Name { get; set; }
            }
     
     
     
    r1输出结果:{"Name":"小白"} 
    
    方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化
     
    序列化类:People
     
    
            public class People
            {
                public int Id { get; set; }
                public string Name { get; set; }
            }
     
     执行序列化反序列化
     
    
    
    
    
            protected void Page_Load(object sender, EventArgs e)
            {
                People people = new People();
                people.Id = 1;
                people.Name = "小白";
    
    
                DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType());
                string szJson = "";
                //序列化
                using (MemoryStream stream = new MemoryStream())
                {
                    json.WriteObject(stream, people);
                    szJson = Encoding.UTF8.GetString(stream.ToArray());
                }
                //反序列化
                using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))
                {
                    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
                    People _people = (People)serializer.ReadObject(ms);
                }
     
             }
    
    
     
    szJson输出结果:{"Id":1,"Name":"小白"}
     
    可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。
     
    
    
    
    
            [DataContract]
            public class People
            {
                [DataMember(Name = "id")]
                public int Id { get; set; }
                [IgnoreDataMember]
                public string Name { get; set; }
            }
    
    
     
     
     
    输出结果: {"id":1}
  • 相关阅读:
    mysql 存中文乱码
    解决办法:Message: 对实体 "useUnicode" 的引用必须以 ';' 分隔符结尾
    windows无法安装到这个磁盘选中的磁盘具有MBR分区表解决办法
    Windows快速添加开机启动项
    使用markdown做本地笔记软件/编辑器
    Apache负载均衡配置
    setuptools包的使用
    Git clone报错Someone Could Be Eavesdropping On You Right Now (Man-In-The-Middle Attack)!
    Code Review 的项目
    Pytorch 之Torch
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3142490.html
Copyright © 2011-2022 走看看