视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
浅析JSON序列化与反序列化
2020-11-27 20:26:25 责编:小采
文档

方法一:引入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}

更多浅析JSON序列化与反序列化相关文章请关注PHP中文网!

下载本文
显示全文
专题