简介:
JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。
下载NuGet包
C#中操作JSON第一步先下载需要的NuGet包Newtonsoft.Json,要注意的是在同一个解决方案中不同类下载的Nuget包要保存版本一致,否者有可能会报错。
反序列化
字符串string转换成类
先创建一个类
public class Site { public int Id { get; set; } public string Name { get; set; } }
将字符串转换成实体类,再通过实体类打印出来
[Test] public void TestJsonToObject() { string json = "{\"Id\":1,\"Name\":\"爱吃香蕉的阿豪\"}"; var site = JsonConvert.DeserializeObject<Site>(json) as Site; Console.WriteLine($"Id={site.Id}"); Console.WriteLine("Nmae="+site.Name); }
json文件转换成类
在实际工作中当我们的json内容很多的时候,就不可能写在类中了,因此我们需要写在一个json文件中,然后通过路径去获取到它
创建一个data类
public class JsonData { public List<Data> data { get; set; } } public class Data { public int id { get; set; } public string name { get; set; } }
创建一个json文件
{ "data": [ { "id" : 1, "name" : "爱吃香蕉的阿豪" }, { "id" : 2, "name" : "张三" }, { "id" : 3, "name" : "李四" } ] }
测试类
[Test] public void TestJsonText() { var json = File.ReadAllText(@"D:\project\c#\Solution\Project\JSON\data.json"); var JsonData = JsonConvert.DeserializeObject<JsonData>(json); foreach (var data in JsonData.data) { Console.WriteLine("id="+data.id + " data="+data.name); } }
序列化
沿用反序列化的Site类,先new一个类,设置字段的值,然后序列化成字符串打印出来
[Test] public void TestObjectToJson() { Site site = new() { Id = 2, Name = "laowan" }; var serializeObject = JsonConvert.SerializeObject(site); Console.WriteLine(serializeObject); }