C#序列化和反序列化,以及System.Text.Json和Newtonsoft.Json比较
作者:野牛程序员:2023-12-27 18:27:54C#阅读 2646
C#中有两个主要的方式来进行序列化和反序列化:System.Text.Json
和 Newtonsoft.Json
,它们都是用于处理 JSON 数据的库。
序列化是将对象转换为 JSON 格式的过程,而反序列化则是将 JSON 格式的数据转换回对象。
在C#中,System.Text.Json
是自.NET Core 3.0以及.NET 5.0及更高版本中引入的官方 JSON 库。它被设计成性能更高,并且具有更好的内存利用率。以下是一个简单的示例:
using System; using System.Text.Json; class Program { static void Main() { // 序列化 var person = new Person { Name = "John Doe", Age = 30 }; string json = JsonSerializer.Serialize(person); Console.WriteLine(json); // 反序列化 var deserializedPerson = JsonSerializer.Deserialize<Person>(json); Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}"); } } class Person { public string Name { get; set; } public int Age { get; set; } }
另一方面,Newtonsoft.Json
(也称为Json.NET)是.NET Framework中最流行的 JSON 库,也可以在.NET Core和.NET 5.0及更高版本中使用。它具有丰富的功能和广泛的社区支持。以下是同样的示例,使用 Newtonsoft.Json
:
using System; using Newtonsoft.Json; class Program { static void Main() { // 序列化 var person = new Person { Name = "John Doe", Age = 30 }; string json = JsonConvert.SerializeObject(person); Console.WriteLine(json); // 反序列化 var deserializedPerson = JsonConvert.DeserializeObject<Person>(json); Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}"); } } class Person { public string Name { get; set; } public int Age { get; set; } }
总体来说,选择使用 System.Text.Json
还是 Newtonsoft.Json
取决于项目需求和个人偏好。System.Text.Json
是官方推荐的选择,特别是在新的.NET版本中,但在某些情况下,可能仍然选择使用 Newtonsoft.Json
。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892