赞
踩
一、Json.NET(Newtonsoft.Json)
1. 引入NuGet包
在项目中安装Json.NET库,可以通过NuGet Package Manager或命令行完成:
Bash
dotnet add package Newtonsoft.Json
2. 序列化
Csharp
- using Newtonsoft.Json;
-
- public class Person
- {
- public string FirstName { get; set; }
- public string LastName { get; set; }
- }
-
- public class JsonNetSerializationDemo
- {
- public static void SerializePerson(Person person)
- {
- // 序列化为JSON字符串
- string json = JsonConvert.SerializeObject(person, Formatting.Indented);
- Console.WriteLine(json);
- }
- }
-
- // 示例使用
- JsonNetSerializationDemo.SerializePerson(new Person { FirstName = "John", LastName = "Doe" });
注释:使用JsonConvert.SerializeObject
方法将Person
对象序列化为格式化的JSON字符串。
3. 反序列化
Csharp
- public static Person DeserializePerson(string json)
- {
- // 反序列化为Person对象
- Person person = JsonConvert.DeserializeObject<Person>(json);
- return person;
- }
-
- // 示例使用
- string inputJson = "{\"FirstName\":\"Jane\",\"LastName\":\"Smith\"}";
- Person deserializedPerson = JsonNetSerializationDemo.DeserializePerson(inputJson);
注释:使用JsonConvert.DeserializeObject
方法将JSON字符串反序列化为Person
对象。
二、System.Text.Json
1. 引入命名空间
无需额外安装NuGet包,直接引入System.Text.Json
命名空间即可使用内置的JSON序列化/反序列化功能。
Csharp
using System.Text.Json;
2. 序列化
Csharp
- public static void SerializePerson(Person person)
- {
- // 创建JsonSerializerOptions实例(可选,用于设置序列化选项)
- JsonSerializerOptions options = new JsonSerializerOptions
- {
- WriteIndented = true // 生成格式化的JSON
- };
-
- // 序列化为JSON字符串
- string json = JsonSerializer.Serialize(person, options);
- Console.WriteLine(json);
- }
注释:使用JsonSerializer.Serialize
方法将Person
对象序列化为格式化的JSON字符串,通过JsonSerializerOptions
设置序列化选项。
3. 反序列化
Csharp
- public static Person DeserializePerson(string json)
- {
- // 反序列化为Person对象
- Person person = JsonSerializer.Deserialize<Person>(json);
- return person;
- }
-
- // 示例使用
- string inputJson = "{\"FirstName\":\"Jane\",\"LastName\":\"Smith\"}";
- Person deserializedPerson = JsonNetSerializationDemo.DeserializePerson(inputJson);
注释:使用JsonSerializer.Deserialize
方法将JSON字符串反序列化为Person
对象。
三、特性与定制
Json.NET:
[JsonProperty]
属性控制序列化时的属性名称、顺序等。System.Text.Json:
[JsonPropertyName]
属性控制序列化时的属性名称。JsonConverter<T>
实现自定义转换器。JsonSerializerOptions
中设置全局或类型的序列化行为。四、性能对比
五、总结
本文从零开始,详细介绍了C#中两种流行的JSON序列化与反序列化库——Json.NET和System.Text.Json的使用方法。通过创建对象、引入库或命名空间、编写序列化与反序列化代码,展示了如何使用这两种库将对象转换为JSON字符串,以及将JSON字符串还原为对象。每个示例均包含详尽的注释,解释了代码的工作原理和使用场景。通过这些内容,您应已全面理解如何在C#中使用Json.NET和System.Text.Json进行JSON序列化与反序列化,并了解了它们各自的特性和适用场景。结合文中提供的代码示例与注释,您可以根据项目需求选择合适的库进行JSON数据处理,并为进一步探索其高级功能打下坚实基础。
六、进阶话题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。