常见序列化器
二进制序列化器
命名空间 System.Runtime.Serialization.Formatters.Binary;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(fileStream, ListPersons); }
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); fileStream.Position = 0; List<Human> list = (List<Human>)binaryFormatter.Deserialize(fileStream); foreach (var item in list) { item.Action(); } }
|
Soap
序列化器
命名空间 System.Runtime.Serialization.Formatters.Soap;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite)) { SoapFormatter soapFormatter = new SoapFormatter(); soapFormatter.Serialize(fileStream, ListPersons.ToArray()); }
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite)) { SoapFormatter soapFormatter = new SoapFormatter(); fileStream.Position = 0; List<Human> list = ((Human[])soapFormatter.Deserialize(fileStream)).ToList(); foreach (var item in list) { item.Action(); } }
|
XML序列化器
命名空间: System.Xml.Serialization;
XML:标记语言
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Human>)); xmlSerializer.Serialize(fileStream, ListPersons); }
using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite)) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Human>)); fileStream.Position = 0; List<Human> list = (List<Human>)xmlSerializer.Deserialize(fileStream); foreach (var item in list) { item.Action(); } }
|
Json
序列化器
命名空间:System.Web.Script.Serialization;
或引用 System.Web.Extentsion;
或者 Newtonsoft.Json;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| { JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); string sJson = javaScriptSerializer.Serialize(ListPersons); File.WriteAllText(path1, sJson); }
{ string sText = File.ReadAllText(path1); JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer(); List<Human> list = javaScriptSerializer.Deserialize<List<Human>>(sText); foreach (var item in list) { item.Action(); } }
{ string sJson = JsonConvert.SerializeObject(ListPersons); File.WriteAllText(path2, sJson); }
{ string sText = File.ReadAllText(path1); List<Human> list = JsonConvert.DeserializeObject<List<Human>>(sText); foreach (var item in list) { item.Action(); } }
|
常用 Newtonsoft.Json
,因其效率高于内置的 JavaScriptSerializer
,另如果使用内置序列化器,需要对应序列化的类型指定 [Serializable]
的特性。