c#JSON序列化&反序列化

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

 简介:

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

下载NuGet包

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

image.gif

反序列化

字符串string转换成类

先创建一个类

public class Site
{
    public int Id { get; set; }
    public string Name { get; set; }
}

image.gif

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

[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);
    }

image.gif

image.gif

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; }
}

image.gif

创建一个json文件

image.gif

{
  "data": [
    {
      "id" : 1,
      "name" : "爱吃香蕉的阿豪"
    },
    {
      "id" : 2,
      "name" : "张三"
    },
    {
      "id" : 3,
      "name" : "李四"
    }
  ]
}

image.gif

测试类

[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);
        }
    }

image.gif

image.gif

序列化

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

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

image.gif

image.gif


目录
相关文章
|
1月前
|
存储 C#
C#中的序列化和反序列化
C#中的序列化和反序列化
12 0
|
1月前
|
存储 Java 数据库
|
14天前
|
存储 Java
Java输入输出:解释一下序列化和反序列化。
Java中的序列化和反序列化是将对象转换为字节流和反之的过程。ObjectOutputStream用于序列化,ObjectInputStream则用于反序列化。示例展示了如何创建一个实现Serializable接口的Person类,并将其序列化到文件,然后从文件反序列化回Person对象。
24 5
|
1月前
|
存储 C#
C#中的序列化和反序列化案例
C#中的序列化和反序列化案例
13 0
|
1月前
|
JSON Java Maven
使用Jackson进行 JSON 序列化和反序列化
使用Jackson进行 JSON 序列化和反序列化
27 0
|
1月前
|
存储 JSON 安全
序列化模块pickle和json有什么区别
序列化模块pickle和json有什么区别
18 0
|
1月前
|
存储 JSON 网络协议
【计算机网络】序列化,反序列化和初识协议
【计算机网络】序列化,反序列化和初识协议
|
2月前
|
vr&ar
MFC序列化及反序列化变量
MFC序列化及反序列化变量
16 0
|
2月前
|
vr&ar
MFC序列化及反序列化对象
MFC序列化及反序列化对象
18 0
|
2月前
|
JSON 数据格式 C++
[序列化协议] --- JSON
[序列化协议] --- JSON
31 0