在C#中,序列化和反序列化是將對象轉換為可存儲或可傳輸的格式的過程,以及從這種格式還原對象的過程。這可以簡化數據處理,特別是在需要將對象存儲到文件、數據庫或通過網絡發送時。以下是使用C#進行序列化和反序列化的方法:
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 Doe", 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}");
}
}
}
首先,安裝Json.NET庫:
Install-Package Newtonsoft.Json
然后,使用以下代碼進行序列化和反序列化:
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 Doe", 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}");
}
}
這兩種方法都可以簡化數據處理,但Json.NET庫更靈活,支持更多的序列化選項,如自定義日期格式、忽略空值等。此外,Json.NET庫在處理大型對象和復雜數據結構時性能更好。因此,在實際項目中,推薦使用Json.NET庫進行序列化和反序列化。