`n
在 NET/" style="text-decoration: none; color: inherit;" title="C#">C# 中,序列化和反序列化是将对象转换为可存储或传输格式以及将其再转换回对象的过程。序列化通常会将对象转化为 JSON、XML 或二进制格式。反序列化则是从这些格式中恢复原对象。
使用 `System.Text.Json` 命名空间可以轻松实现 JSON 格式的序列化和反序列化。通过调用 `JsonSerializer.Serialize()` 方法,可以将对象转换为 JSON 字符串。类似地,使用 `JsonSerializer.Deserialize
例如,定义一个简单的类:
```csharppublic class Person{ public string Name { get; set; } public int Age { get; set; }}```
然后,您可以将该类的实例序列化为 JSON:
```csharpvar person = new Person { Name = "Alice", Age = 30 };string jsonString = JsonSerializer.Serialize(person);```
通过这个方式,`jsonString` 变量现在存储着对应的 JSON 格式的数据。
反序列化过程同样简单。如果有一个 JSON 字符串,比如 `jsonString`,可以将其还原成 `Person` 对象:
```csharpPerson deserializedPerson = JsonSerializer.Deserialize
这个对象现在复原了之前序列化的信息,您可以访问它的属性。
如果需要使用 XML 格式,可以采用 `System.Xml.Serialization` 命名空间。使用 `XmlSerializer` 类可以完成类似的操作。需要注意的是,定义的类属性应有 `XmlElement` 特性,确保序列化时能够正常工作。
以下是一些示例:
```csharpusing System.Xml.Serialization;// 对于 XML 序列化public class Person{ [XmlElement("Name")] public string Name { get; set; } [XmlElement("Age")] public int Age { get; set; }}```
要序列化,您可以创建 `XmlSerializer` 实例并调用 `Serialize()` 方法:
```csharpvar serializer = new XmlSerializer(typeof(Person));using (var writer = new StringWriter()){ serializer.Serialize(writer, person); string xmlString = writer.ToString();}```
反向操作同样简单,利用 `Deserialize()` 方法可以将 XML 字符串还原为对象:
```csharpusing (var reader = new StringReader(xmlString)){ Person deserializedPerson = (Person)serializer.Deserialize(reader);}```
选择合适的序列化格式时,可根据需求而定。JSON 格式通常更为轻量,且在网络传输中更为高效,适合大部分场景。XML 格式则在需要严格结构或复杂数据时具备优势。