設有對象:
代碼
public class Person
{
public string Name
{
get; set;
}
public int Age
{
get; set;
}
public string Address
{
get; set;
}
}
Person p = new Person{Name = "McJeremy",Age = 25, Address = "ShenZhen"};
現在使用以下幾種方式對其序列化:
1、使用 BinaryFormatter
代碼
FileStream fs = new FileStream(@"D:/person.txt", FileMode.OpenOrCreate, FileAccess.Write);
BinaryFormatter bf = new BinaryFormatter();
try
{
bf.Serialize(fs, p);
//還原序列化 object obj=bf.Deserialize(fs)
fs.Close();
}
catch
{
}
2、使用XmlSerializer
代碼
FileStream fs = new FileStream(@"D:/person.xml", FileMode.OpenOrCreate, FileAccess.Write);
XmlSerializer xs = new XmlSerializer(typeof(Person));
try
{
xs.Serialize(fs, p);
//還原序列化 object obj=xs.Deserialize(fs)
fs.Close();
}
catch
{
}
序列化結果:
代碼
<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Xu</Name>
<Age>25</Age>
<Address>ShenZhen</Address>
</Person>
/***使用DataContract及DataContractJson時,需要在Person類及其屬性上添加DataContract&&DataMember屬性,如下:
代碼
[DataContract]
public class Person
{
[DataMember(Order=1)]
public string Name
{
get;
set;
}
[DataMember(Order = 2)]
public int Age
{
get;
set;
}
[DataMember(Order = 3)]
public string Address
{
get;
set;
}
}
3、使用DataContractSerializer(結果存為xml格式 )
代碼
using (FileStream fs = new FileStream(@"D:/person_DataContract.xml", FileMode.OpenOrCreate, FileAccess.Write))
{
DataContractSerializer ds = new DataContractSerializer(typeof(Person));
ds.WriteObject(fs, p);
}
//結果:
<Person xmlns="http://schemas.datacontract.org/2004/07/ConsoleApplication1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Name>Xu</Name><Age>25</Age><Address>ShenZhen</Address></Person>
4、在System.ServiceModel.web.dll中,還有個DataContractJsonSerializer,結果存為Json格式
代碼
using (FileStream fs = new FileStream(@"D:/person_DataContractJson.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
DataContractJsonSerializer ds = new DataContractJsonSerializer(typeof(Person));
ds.WriteObject(fs, p);
}
//結果:
{"Name":"McJeremy","Age":25,"Address":"ShenZhen"}