c# 序列化和json

作者:编程家 分类: arrays 时间:2025-12-25

# 使用C#进行对象序列化和JSON互转

C#语言提供了强大的序列化和反序列化功能,使得我们能够方便地将对象转换为JSON格式,或者将JSON数据反序列化为对象。这种能力对于在不同系统或平台之间进行数据交换非常有用。在本文中,我们将深入探讨C#中的序列化和JSON处理,并提供一些实用的案例代码。

## C#中的序列化

序列化是将对象转换为可存储或传输的格式的过程。在C#中,可以使用`System.Runtime.Serialization`命名空间中的`DataContractSerializer`类来执行序列化操作。这个类使用一种称为数据合同(Data Contract)的机制来定义对象的序列化形式。

csharp

using System;

using System.IO;

using System.Runtime.Serialization;

using System.Xml;

[DataContract]

public class Person

{

[DataMember]

public string FirstName { get; set; }

[DataMember]

public string LastName { get; set; }

[DataMember]

public int Age { get; set; }

}

class Program

{

static void Main()

{

// 创建一个Person对象

Person person = new Person

{

FirstName = "John",

LastName = "Doe",

Age = 30

};

// 创建DataContractSerializer对象

DataContractSerializer serializer = new DataContractSerializer(typeof(Person));

// 将对象序列化到XML

using (MemoryStream stream = new MemoryStream())

{

using (XmlWriter writer = XmlWriter.Create(stream))

{

serializer.WriteObject(writer, person);

}

string xmlString = Encoding.UTF8.GetString(stream.ToArray());

Console.WriteLine("Serialized XML:%

" + xmlString);

}

}

}

在上面的例子中,我们定义了一个`Person`类,并使用`DataContract`和`DataMember`属性来标记需要序列化的成员。然后,我们创建了一个`DataContractSerializer`对象,并使用它将`Person`对象序列化为XML字符串。

## JSON序列化与反序列化

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,也是在Web开发中广泛使用的一种格式。在C#中,可以使用`System.Text.Json`命名空间中的`JsonSerializer`类来进行JSON序列化和反序列化。

### JSON序列化

csharp

using System;

using System.Text.Json;

public class Program

{

public class Person

{

public string FirstName { get; set; }

public string LastName { get; set; }

public int Age { get; set; }

}

public static void Main()

{

// 创建一个Person对象

Person person = new Person

{

FirstName = "John",

LastName = "Doe",

Age = 30

};

// 将对象序列化为JSON字符串

string jsonString = JsonSerializer.Serialize(person);

Console.WriteLine("Serialized JSON:%

" + jsonString);

}

}

在上述代码中,我们创建了一个`Person`类,然后使用`JsonSerializer`将对象序列化为JSON字符串。

### JSON反序列化

csharp

using System;

using System.Text.Json;

public class Program

{

public class Person

{

public string FirstName { get; set; }

public string LastName { get; set; }

public int Age { get; set; }

}

public static void Main()

{

// JSON字符串

string jsonString = "{%%"FirstName%%":%%"John%%",%%"LastName%%":%%"Doe%%",%%"Age%%":30}";

// 将JSON字符串反序列化为Person对象

Person person = JsonSerializer.Deserialize(jsonString);

// 打印反序列化后的对象属性

Console.WriteLine($"Deserialized Person: {person.FirstName} {person.LastName}, Age: {person.Age}");

}

}

在上述代码中,我们通过`JsonSerializer.Deserialize`方法将JSON字符串反序列化为`Person`对象,并打印反序列化后的对象属性。

#

通过C#中的序列化和JSON处理功能,我们可以轻松地在不同系统之间传递数据,实现数据的有效交换和共享。使用`DataContractSerializer`和`JsonSerializer`类,我们能够方便地实现对象的序列化和反序列化,确保数据在传输和存储过程中的完整性和一致性。这些功能为C#开发者提供了强大的工具,使得处理数据变得更加简便和高效。