c#序列化详解示例


在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)库来实现相同的功能。