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的简单操作,作者能力有限,文章中难免存在错误和纰漏,请指正,如果文章帮到了你,请帮忙点赞,三连支持。
👍👍👍
👍👍👍
👍👍👍