JSON

C#实现JSON序列化与反序列化介绍

字号+ 作者:H5之家 来源:H5之家 2015-10-07 08:03 我要评论( )

本文介绍C#实现JSON序列化与反序列化的两种方法:使用JavaScriptSerializer类和使用DataContractJsonSerializer类,并提供详细的示例代码供参考。

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

序列化类:Personnel

Personnel
{
; }
; }
}

执行序列化反序列化:

sender, EventArgs e)
{
Personnel personnel
Personnel();
personnel.Id
;
personnel.Name
;


JavaScriptSerializer jsonSerializer
JavaScriptSerializer();
//执行序列化
jsonSerializer.Serialize(personnel);

//执行反序列化
(r1);
}

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

可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。

Personnel
{
[ScriptIgnore]
; }
; }
}

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

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

序列化类:People

People
{
; }
; }
}

执行序列化反序列化

sender, EventArgs e)
{
People people
People();
people.Id
;
people.Name
;


DataContractJsonSerializer json
DataContractJsonSerializer(people.GetType());
;
//序列化
MemoryStream())
{
json.WriteObject(stream, people);
szJson
= Encoding.UTF8.GetString(stream.ToArray());
}
//反序列化
MemoryStream(Encoding.UTF8.GetBytes(szJson)))
{
DataContractJsonSerializer serializer
(People));
People _people
= (People)serializer.ReadObject(ms);
}
}

szJson输出结果:{"Id":1,"Name":"小白"}

可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。

[DataContract]
People
{
[DataMember(Name
)]
; }
[IgnoreDataMember]
; }
}

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

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评
r