C#使用Newtonsoft.Json操作JSON详解

3 下载量 136 浏览量 更新于2024-07-15 收藏 106KB PDF 举报
“本文主要介绍了C#操作JSON的相关知识,包括.NET框架内建的DLL支持以及常用的第三方库Newtonsoft.Json,并提供了具体的序列化和反序列化的示例。” 在C#编程中,处理JSON数据是非常常见的任务。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。.NET框架提供了多种方式来支持JSON的操作。 1. .NET对JSON的支持介绍 .NET框架自身包含两个DLL文件,即System.Runtime.Serialization.dll和System.Web.Extensions.dll,它们可以用于对象的JSON序列化和反序列化。System.Runtime.Serialization.dll提供了基本的序列化功能,而System.Web.Extensions.dll则主要在Web项目中使用,用于处理ASP.NET相关的JSON操作。然而,有一个限制需要注意,即System.Web.Extensions.dll只能在Web项目中引用和使用。 2. 第三方库Newtonsoft.Json.dll 对于更灵活且功能强大的JSON操作,开发者通常选择使用第三方库Newtonsoft.Json。这个库提供了丰富的API,使得JSON的序列化和反序列化更加便捷。Newtonsoft.Json.dll不仅支持基本类型,还能够处理复杂的数据结构,如自定义对象、数组和嵌套的对象等。 3. JSON序列化和反序列化示例 以下是一个使用Newtonsoft.Json库进行序列化和反序列化的C#代码示例: 首先定义两个类,`Person`和`Programmer`,它们分别代表普通人的信息和程序员的特殊信息,包含姓名、性别以及编程语言列表: ```csharp public class Person { public string Name; // 姓名 public bool Sex; // 性别,是否是男 public Person(string name, bool sex) { this.Name = name; this.Sex = sex; } public override string ToString() { return $"姓名:{this.Name}\t性别:{(this.Sex ? "男" : "女")}"; } } public class Programmer : Person { public List<string> Languages; // 编程语言 public Programmer(string name, bool sex, List<string> languages) : base(name, sex) { this.Languages = languages; } public override string ToString() { StringBuilder str = new StringBuilder(); str.Append(base.ToString() + "\t编程语言:"); foreach (string l in this.Languages) { str.Append(l + " "); } return str.ToString(); } } ``` 接下来,我们演示如何将这些对象序列化为JSON字符串,以及反序列化JSON字符串回对象: ```csharp using Newtonsoft.Json; class Program { static void Main(string[] args) { Person person = new Person("张三", true); Programmer programmer = new Programmer("李四", false, new List<string>() { "C#", "Java", "Python" }); // 序列化 string jsonPerson = JsonConvert.SerializeObject(person); // 将Person对象序列化为JSON字符串 string jsonProgrammer = JsonConvert.SerializeObject(programmer); // 将Programmer对象序列化为JSON字符串 Console.WriteLine(jsonPerson); // 输出JSON字符串 Console.WriteLine(jsonProgrammer); // 反序列化 Person deserializedPerson = JsonConvert.DeserializeObject<Person>(jsonPerson); // 将JSON字符串反序列化回Person对象 Programmer deserializedProgrammer = JsonConvert.DeserializeObject<Programmer>(jsonProgrammer); // 将JSON字符串反序列化回Programmer对象 Console.WriteLine(deserializedPerson.ToString()); Console.WriteLine(deserializedProgrammer.ToString()); // 保存到文件 string filePath = @"D:\"; File.WriteAllText(filePath + "person.json", jsonPerson); File.WriteAllText(filePath + "programmer.json", jsonProgrammer); } } ``` 这段代码展示了如何使用Newtonsoft.Json库进行JSON序列化和反序列化,以及如何将结果保存到文件中。通过这种方式,开发者可以轻松地在C#程序中处理JSON数据,无论是从Web服务接收数据,还是将本地数据转换为JSON格式发送出去。