C#使用Newtonsoft.Json操作JSON详解
“本文主要介绍了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格式发送出去。
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 6
- 资源: 919
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 中国微型数字传声器:技术革新与市场前景
- 智能安防:基于Hi3515的嵌入式云台控制系统设计
- 手机电量低时辐射真增千倍?解析手机使用谣言
- 56F803型DSP驱动的高精度大功率超声波电源控制策略研究
- ARM与GPRS结合的远程监测系统设计
- GPS与RFID技术结合的智能巡检系统设计
- CPLD驱动的低功耗爆炸场温度测试系统设计
- 基于FPGA的智能驱动控制系统:可扩展设计与工业网络协议
- 基于ATmega128和CH374的嵌入式USB接口设计
- 基于AT89C52的温度补偿超声波测距仪:高精度设计与应用
- MSP430F448单片机在交流数字电压表中的应用
- 提升变频器应用效率的12项实用技巧
- STM32F103在数字电镀电源并联均流系统中的应用
- PSpice仿真下的升压开关电源设计:拓扑分析与CCM稳定性提升
- 轻巧高效:MSP430主导的低成本无线传感器网络节点设计
- FPGA在EDA/PLD中实现LVDS接口的应用解析
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)