C#解析Json详解
文章目录
- C#解析Json详解
- 什么是Json?
- Json的特点
 
- 常用的Json库
- Json.NET (Newtonsoft.Json)
- System.Text.Json
 
- 实例
- 序列化
- 反序列化
 
- 总结
 
什么是Json?
JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式,主要用于数据的序列化和交互。常用于Web中,其他领域也经常出现JSON的身影。
Json的特点
Json的最小单元式键值对,即Key-Value组合。它的数据结构需要满足以下条件:
- 由键值对组成,每个键(属性名)都是一个字符串,后面跟着一个值。
- 值可以是字符串、数字、布尔值、对象、数组、null等。
- JSON对象是由一对大括号{}包围的键值对集合,键和值之间用冒号:分隔。
- JSON数组是由一对方括号 []包围的值的有序列表,值之间用逗号,分隔。
一个常规的Json如下所示;
{"name": "xiaomai","age": 30,"isStudent": false,"hobbies": ["basketball", "swimming"]
}
注意:在上面的示例中,name就是一个属性或者是键,后面跟一个
:号,xiaomai则是值,键值对必须成对出现,键值对之间需要用,隔开。
-  字符串: 
 JSON字符串必须用双引号"包围,而不是单引号'。
-  数字: 
 JSON支持整数和浮点数。
-  布尔值: 
 JSON使用true和false表示布尔值。
-  null: 
 JSON使用null表示空值或缺失的值。
-  嵌套结构: 
 JSON对象可以嵌套在其他JSON对象中,形成复杂的数据结构。数组也可以包含其他JSON值,包括对象和数组。
常用的Json库
在C#中,我们可以用这几个常用的JSON解析库来处理JSON数据;
Json.NET (Newtonsoft.Json)
Json.NET(也称为Newtonsoft.Json)是C#中最常用的JSON解析库,广泛用于处理JSON数据。
它提供了丰富的功能,包括对象序列化、反序列化、LINQ查询、处理嵌套对象和数组、自定义序列化、自定义命名策略等等。
它支持.NET框架和.NET Core,并且在开发社区中有广泛的支持和文档。
可以通过以下指令在visual studio中安装,也可以通过NuGet包管理器来安装;
Install-Package Newtonsoft.Json

System.Text.Json
System.Text.Json是.NET Core 3.0及更高版本中引入的官方JSON库。
它提供了基本的JSON序列化和反序列化功能,是.NET Core的一部分,无需额外安装。
由于是官方支持的库,因此在.NET Core应用中使用时,它具有性能和可移植性方面的优势。
 安装方式:
 System.Text.Json是.NET Core的一部分,不需要额外的安装。
实例
本文主要介绍Json.NET 的使用以及操作;
序列化
序列化就是将对象转换为JSON字符串;
 下面我们创建了一个Person对象,然后使用JsonConvert.SerializeObject将其序列化为JSON字符串。
using Newtonsoft.Json;
using System;namespace JsonSerializationExample
{class Program{static void Main(string[] args){// 创建一个C#对象Person person = new Person{Name = "John",Age = 30,City = "New York"};// 将对象序列化为JSON字符串string json = JsonConvert.SerializeObject(person);Console.WriteLine(json);}}public class Person{public string Name { get; set; }public int Age { get; set; }public string City { get; set; }}
}反序列化
反序列化就是将JSON字符串转换为对象,使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为C#对象;
using Newtonsoft.Json;
using System;namespace JsonDeserializationExample
{class Program{static void Main(string[] args){// JSON字符串示例string json = "{\"Name\":\"Alice\",\"Age\":25,\"City\":\"Los Angeles\"}";// 将JSON字符串反序列化为C#对象Person person = JsonConvert.DeserializeObject<Person>(json);// 访问反序列化后的对象属性Console.WriteLine($"Name: {person.Name}");Console.WriteLine($"Age: {person.Age}");Console.WriteLine($"City: {person.City}");}}public class Person{public string Name { get; set; }public int Age { get; set; }public string City { get; set; }}
}总结
本文主要介绍了C#对JSON的简单操作,作者能力有限,文章中难免存在错误和纰漏,请指正,如果文章帮到了你,请帮忙点赞,三连支持。
 👍👍👍
 👍👍👍
 👍👍👍