在C#中,序列化是将对象的状态信息转换为可以存储或传输的格式的过程,反序列化则是这个过程的逆过程。C# 提供了多种方式来实现序列化和反序列化,包括使用二进制序列化、XML 序列化、JSON 序列化等。下面,我将以 JSON 序列化和反序列化为例,给出详细的示例代码。
### JSON 序列化与反序列化
首先,你需要有一个可序列化的类。例如:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
// 可以添加一个构造函数来初始化对象
public Person(string name, int age)
{
Name = name;
Age = age;
}
}
#### 序列化
为了序列化 `Person` 类的实例到 JSON 字符串,你可以使用 `System.Text.Json` 命名空间下的 `JsonSerializer` 类(.NET Core 3.0 及以上版本):
using System;
using System.Text.Json;
class Program
{
static void Main(string[] args)
{
Person person = new Person("John Doe", 30);
// 序列化
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
// 输出: {"Name":"John Doe","Age":30}
}
}
#### 反序列化
要将 JSON 字符串反序列化为 `Person` 类的实例,你可以再次使用 `JsonSerializer` 类:
using System;
using System.Text.Json;
class Program
{
static void Main(string[] args)
{
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30}";
// 反序列化
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
// 输出: Name: John Doe, Age: 30
}
}
以上示例展示了如何在 C# 中使用 `System.Text.Json` 命名空间进行 JSON 的序列化和反序列化。这是处理 JSON 数据的一种高效且简洁的方式,适用于 .NET Core 3.0 及以上版本。对于更早的 .NET 版本,可能需要使用 `Newtonsoft.Json`(Json.NET)库来实现相同的功能。