C#使用Newtonsoft.Json操作JSON详解
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格式发送出去。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-09-04 上传
2021-01-20 上传
2020-09-04 上传
2019-01-22 上传
2013-10-24 上传
2020-12-25 上传
weixin_38704922
- 粉丝: 6
- 资源: 919