• 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}

  • 相关阅读:
    前端工程精粹(一):静态资源版本更新与缓存
    METADATATYPE的使用,MVC的MODEL层数据验证
    Android开发之Intent.Action
    Android应用开发SharedPreferences存储数据的使用方法
    php开发环境搭建 win 7 + apache + mysql
    windows 2003 导出excel iis 配置记录
    fineui demo地址
    Fourth
    Third
    Second
  • 原文地址:https://www.cnblogs.com/ejiyuan/p/1708084.html
Copyright © 2020-2023  润新知