以下是对JSON序列化与反序列化进行了详细的分析介绍
需要的朋友可以过来参考下
方法一引入SystemWebScriptSerialization命名空间使用 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 =
;
personnel
Name = "小白";
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
//执行序列化
string r = jsonSerializerSerialize(personnel);
//执行反序列化
Personnel _Personnel = jsonSerializerDeserialize<Personnel>(r);
}
r输出结果{"Id":"Name":"小白"}
可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段
复制代码 代码如下:
public class Personnel
{
[ScriptIgnore]
public int Id { get; set; }
public string Name { get; set; }
}
r输出结果{"Name":"小白"}
方法二引入 SystemRuntimeSerializationJson命名空间使用 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 =
;
people
Name = "小白";
DataContractJsonSerializer json = new DataContractJsonSerializer(peopleGetType());
string szJson = "";
//序列化
using (MemoryStream stream = new MemoryStream())
{
jsonWriteObject(stream people);
szJson = EncodingUTFGetString(streamToArray());
}
//反序列化
using (MemoryStream ms = new MemoryStream(EncodingUTFGetBytes(szJson)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));
People _people = (People)serializerReadObject(ms);
}
}
szJson输出结果{"Id":"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":}