.NET中使用二進位、XML和JSON序列化持久化和恢復可序列化物件
.NET中的物件序列化允許將物件儲存在持久性儲存中,並在以後以其原始形式檢索。要序列化對象,其類別必須標記為[Serializable]
。在使用二進位序列化時,此註解至關重要,但在XML或JSON序列化中則不需要。
以下是二進位、XML和JSON序列化的函數範例:
二元序列化:
<code class="language-csharp">public static void WriteToBinaryFile<T>(string filePath, T objectToWrite, bool append = false) { using (Stream stream = File.Open(filePath, append ? FileMode.Append : FileMode.Create)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); binaryFormatter.Serialize(stream, objectToWrite); } } public static T ReadFromBinaryFile<T>(string filePath) { using (Stream stream = File.Open(filePath, FileMode.Open)) { var binaryFormatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); return (T)binaryFormatter.Deserialize(stream); } }</code>
XML序列化:
<code class="language-csharp">public static void WriteToXmlFile<T>(string filePath, T objectToWrite, bool append = false) where T : new() { TextWriter writer = null; try { var serializer = new XmlSerializer(typeof(T)); writer = new StreamWriter(filePath, append); serializer.Serialize(writer, objectToWrite); } finally { if (writer != null) writer.Close(); } } public static T ReadFromXmlFile<T>(string filePath) where T : new() { TextReader reader = null; try { var serializer = new XmlSerializer(typeof(T)); reader = new StreamReader(filePath); return (T)serializer.Deserialize(reader); } finally { if (reader != null) reader.Close(); } }</code>
JSON序列化(需Newtonsoft.Json NuGet套件):
<code class="language-csharp">public static void WriteToJsonFile<T>(string filePath, T objectToWrite, bool append = false) where T : new() { TextWriter writer = null; try { var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite); writer = new StreamWriter(filePath, append); writer.Write(contentsToWriteToFile); } finally { if (writer != null) writer.Close(); } } public static T ReadFromJsonFile<T>(string filePath) where T : new() { TextReader reader = null; try { reader = new StreamReader(filePath); var fileContents = reader.ReadToEnd(); return JsonConvert.DeserializeObject<T>(fileContents); } finally { if (reader != null) reader.Close(); } }</code>
使用方法範例:
<code class="language-csharp">// 将someClass变量的内容写入文件。 WriteToBinaryFile<SomeClass>("C:\someClass.txt", object1); // 将文件内容读回变量。 SomeClass object1 = ReadFromBinaryFile<SomeClass>("C:\someClass.txt");</code>
以上是如何使用二進位、XML 和 JSON 序列化在 .NET 中保留和恢復可序列化物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!