什么是Json?
 JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式,主要用于数据的序列化和交互。常用于Web中,其他领域也经常出现JSON的身影。
与xml相比,更快,更小,更容易解析/.
Json的特点
 Json的最小单元式键值对,即Key-Value组合。它的数据结构需要满足以下条件:
由键值对组成,每个键(属性名)都是一个字符串,后面跟着一个值。
 值可以是字符串、数字、布尔值、对象、数组、null等。
 JSON对象是由一对大括号{}包围的键值对集合,键和值之间用冒号 : 分隔。
 JSON数组是由一对方括号 [] 包围的值的有序列表,值之间用逗号 , 分隔。
 {
     "name": "xiaomi Su7",
     "SN": 123456,
     "isCar: true,
     "Journey": "1000km"
 }
 注意:在上面的示例中,name就是一个属性或者是键,后面跟一个:号,xiaomi Su7 则是值,键值对必须成对出现,键值对之间需要用,隔开.
Json值主要有以下类型:
 字符串:
 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数据。
 {
    "Students":[
        {"FirstName":"Jim","LastName":"Green","IsHigh":true},
        {"FirstName":"Li","LastName":"Wang","IsHigh":false},
        {"FirstName":"Li123","LastName":"Wang123","IsHigh":false}
    ]
 }
{"FirstName":"Jim","LastName":"Green","IsHigh":true},表示一个对象
 []内表示一个数组,数组名称是“Students”.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace _68.myJSON
{class Program{static void Main(string[] args){//Reference .Net JSON//using Newtonsoft.Json;//序列化数据,生成JSON文件var o1 = new Person { Name = "David", Age = 29, ID = 001 };var o2 = new Person { Name = "lily", Age = 25, ID = 002 };var o3 = new Person { Name = "Lucy", Age = 28, ID = 003 };var o4 = new Person { Name = "Jim", Age = 30, ID = 004 };var o5 = new Person { Name = "Steve", Age = 27, ID = 005 };Object[] objects = { o1, o2, o3, o4, o5 };string str_JSON = JsonConvert.SerializeObject(objects,Formatting.Indented);File.WriteAllText(@"D:\MyDatas.json", str_JSON);//解析JSON文件,反序列化操作,JSON数据是数组,元素是Person,所以反序列化操作的泛型类型参数是List<Person>,返回List<Person>List<Person> people = JsonConvert.DeserializeObject<List<Person>>(File.ReadAllText("D:\\MyDatas.json"));foreach (var item in people){Console.WriteLine($"{item.Name},{item.Age},{item.ID}");}Console.ReadKey();}}public class Person{public string Name { get; set; }public int ID { get; set; }public int Age { get; set; }}
}如上例,将5个Person对象组成的数组作为数据序列化成一个Json格式的文本文件,如下:
[
   {
     "Name": "David",
     "ID": 1,
     "Age": 29
   },
   {
     "Name": "lily",
     "ID": 2,
     "Age": 25
   },
   {
     "Name": "Lucy",
     "ID": 3,
     "Age": 28
   },
   {
     "Name": "Jim",
     "ID": 4,
     "Age": 30
   },
   {
     "Name": "Steve",
     "ID": 5,
     "Age": 27
   }
 ]
然后我们呢通过泛型反序列化函数DeserializeObject<List<Person> >,将Json格式的文本文件转换成List<Person> 对象,循环得到的集合数据如下:
