C#序列化与反序列化怎样简化代码

avatar
作者
筋斗云
阅读量:0

在C#中,序列化和反序列化是将对象转换为字节流以便存储或传输,然后再将其还原为原始对象的过程。为了简化代码,你可以使用一些内置的序列化方法和库。

  1. 使用BinaryFormatter类进行序列化和反序列化:
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary;  class Person {     public string Name { get; set; }     public int Age { get; set; } }  class Program {     static void Main()     {         Person person = new Person { Name = "John", Age = 30 };          // 序列化         using (FileStream fileStream = new FileStream("person.bin", FileMode.Create))         {             BinaryFormatter binaryFormatter = new BinaryFormatter();             binaryFormatter.Serialize(fileStream, person);         }          // 反序列化         using (FileStream fileStream = new FileStream("person.bin", FileMode.Open))         {             BinaryFormatter binaryFormatter = new BinaryFormatter();             Person deserializedPerson = (Person)binaryFormatter.Deserialize(fileStream);             Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");         }     } } 
  1. 使用Json.NET库进行序列化和反序列化(需要安装Newtonsoft.Json NuGet包):
using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq;  class Person {     public string Name { get; set; }     public int Age { get; set; } }  class Program {     static void Main()     {         Person person = new Person { Name = "John", Age = 30 };          // 序列化         string json = JsonConvert.SerializeObject(person);         Console.WriteLine($"Serialized JSON: {json}");          // 反序列化         Person deserializedPerson = JsonConvert.DeserializeObject<Person>(json);         Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");     } } 

这两种方法都可以简化序列化和反序列化的代码。但是,请注意,BinaryFormatter已经被认为是不安全的,因为它容易受到攻击。在这种情况下,建议使用Json.NET库进行序列化和反序列化。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!