源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

浅析JSON序列化与反序列化

  • 时间:2022-03-22 20:17 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:浅析JSON序列化与反序列化
方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化[b]序列化类:Personnel [/b]
[u]复制代码[/u] 代码如下:
    public class Personnel         {             public int Id { get; set; }             public string Name { get; set; }         }
[b]执行序列化反序列化: [/b]
[u]复制代码[/u] 代码如下:
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属性标记不序列化公共属性或公共字段。
[u]复制代码[/u] 代码如下:
        public class Personnel         {             [ScriptIgnore]             public int Id { get; set; }             public string Name { get; set; }         }
r1输出结果:{"Name":"小白"} 方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化 [b]序列化类:People [/b]
[u]复制代码[/u] 代码如下:
        public class People         {             public int Id { get; set; }             public string Name { get; set; }         }
[b]执行序列化反序列化 [/b]
[u]复制代码[/u] 代码如下:
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标记不起作用。
[u]复制代码[/u] 代码如下:
[DataContract]         public class People         {             [DataMember(Name = "id")]             public int Id { get; set; }             [IgnoreDataMember]             public string Name { get; set; }         }
输出结果: {"id":1}
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部