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

    方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化

    序列化类:Personnel

            public class Personnel
            {
                
    public int Id { getset; }
                
    public string Name { getset; }
            }

    执行序列化反序列化:

    代码
            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 { getset; }
                
    public string Name { getset; }
            }

    r1输出结果:{"Name":"小白"}

    方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化

    序列化类:People

            public class People
            {
                
    public int Id { getset; }
                
    public string Name { getset; }
            }

     执行序列化反序列化

    代码
            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 { getset; }
                [IgnoreDataMember]
                
    public string Name { getset; }
            }

    输出结果: {"id":1}

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

  • 相关阅读:
    Asp.net2.0页面执行顺序 朱燚:
    通过对比学Python(2):集合对象 朱燚:
    通过比较学python(3):字典类,字符串 朱燚:
    [模版项目]怎样用企业服务实现跨进程缓存 朱燚:
    [轻松一下]世界上至少有10種東西是你不知道的 朱燚:
    评:我从编程中悟出八个字(不算原创,不过希望让大家能看看) 朱燚:
    从追MM谈Java的23种设计模式 朱燚:
    学习笔记_Redis 数据类型02
    MongoDB.Driver 中通过管道(Aggregate)实现分组功能查询出符合条件的数据
    MongoDB.Driver 中实现参数动态查询
  • 原文地址:https://www.cnblogs.com/xiurui12345/p/2511633.html
Copyright © 2011-2022 走看看