# 使用C#进行对象序列化和JSON互转
C#语言提供了强大的序列化和反序列化功能,使得我们能够方便地将对象转换为JSON格式,或者将JSON数据反序列化为对象。这种能力对于在不同系统或平台之间进行数据交换非常有用。在本文中,我们将深入探讨C#中的序列化和JSON处理,并提供一些实用的案例代码。## C#中的序列化序列化是将对象转换为可存储或传输的格式的过程。在C#中,可以使用`System.Runtime.Serialization`命名空间中的`DataContractSerializer`类来执行序列化操作。这个类使用一种称为数据合同(Data Contract)的机制来定义对象的序列化形式。csharpusing 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序列化csharpusing 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反序列化csharpusing 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#开发者提供了强大的工具,使得处理数据变得更加简便和高效。