c#JSON序列化&反序列化

爱被打了一巴掌 2024-03-25 23:42 238阅读 0赞

简介:

JSON(全称为JavaScript ObjectNotation) 是一种轻量级的数据交换格式。它是基于JavaScript语法标准的一个子集。JSON采用完全独立于语言的文本格式,可以很容易在各种网络、平台和程序之间传输。JSON的语法很简单,易于人阅读和编写,同时也易于机器解析和生成。

下载NuGet包

C#中操作JSON第一步先下载需要的NuGet包Newtonsoft.Json,要注意的是在同一个解决方案中不同类下载的Nuget包要保存版本一致,否者有可能会报错。

4a0d7c6615ca4815826f32fabc8a7bdc.png

反序列化

字符串string转换成类

先创建一个类

  1. public class Site
  2. {
  3. public int Id { get; set; }
  4. public string Name { get; set; }
  5. }

将字符串转换成实体类,再通过实体类打印出来

  1. [Test]
  2. public void TestJsonToObject()
  3. {
  4. string json = "{\"Id\":1,\"Name\":\"爱吃香蕉的阿豪\"}";
  5. var site = JsonConvert.DeserializeObject<Site>(json) as Site;
  6. Console.WriteLine($"Id={site.Id}");
  7. Console.WriteLine("Nmae="+site.Name);
  8. }

fdae8135d5d04a5eaccb5aeb4b34e7ed.png

json文件转换成类

在实际工作中当我们的json内容很多的时候,就不可能写在类中了,因此我们需要写在一个json文件中,然后通过路径去获取到它

创建一个data类

  1. public class JsonData
  2. {
  3. public List<Data> data { get; set; }
  4. }
  5. public class Data
  6. {
  7. public int id { get; set; }
  8. public string name { get; set; }
  9. }

创建一个json文件

95aa6917a48840f88f0056034bd9b3a8.png

  1. {
  2. "data": [
  3. {
  4. "id" : 1,
  5. "name" : "爱吃香蕉的阿豪"
  6. },
  7. {
  8. "id" : 2,
  9. "name" : "张三"
  10. },
  11. {
  12. "id" : 3,
  13. "name" : "李四"
  14. }
  15. ]
  16. }

测试类

  1. [Test]
  2. public void TestJsonText()
  3. {
  4. var json = File.ReadAllText(@"D:\project\c#\Solution\Project\JSON\data.json");
  5. var JsonData = JsonConvert.DeserializeObject<JsonData>(json);
  6. foreach (var data in JsonData.data)
  7. {
  8. Console.WriteLine("id="+data.id + " data="+data.name);
  9. }
  10. }

008b84dd713849779a0f42a67b93e229.png

序列化

沿用反序列化的Site类,先new一个类,设置字段的值,然后序列化成字符串打印出来

  1. [Test]
  2. public void TestObjectToJson()
  3. {
  4. Site site = new() { Id = 2, Name = "laowan" };
  5. var serializeObject = JsonConvert.SerializeObject(site);
  6. Console.WriteLine(serializeObject);
  7. }

1d7f44cbf5cc4d0ea29b535c5b434f9e.png

发表评论

表情:
评论列表 (有 0 条评论,238人围观)

还没有评论,来说两句吧...

相关阅读

    相关 序列序列

    序列化和反序列化   摘要   序列化和反序列化几乎是工程师们每天都要面对的事情,但是要精确掌握这两个概念并不容易:一方面,它们往往作为框架的一部分出现而湮没

    相关 序列序列

    个人学习理解 (只是自己默写序列化和反序列的代码以及几个问题) 1.序列化 和 反序列化 1.1 什么是序列化 和 反序列化 或者 你如何理解序列化和

    相关 序列序列

    序列化: 对象的序列化主要有两种用途:   1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;   2) 在网络上传送对象的字节序列。   

    相关 Java序列序列

    目录 1:什么是序列化、反序列化? 2:序列化的用途? 3:序列化的n种方式 1:什么是序列化、反序列化? 把对象转换为字节序列的过程称为对象的序列化