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