C# _Json数据

发布于:2025-08-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

目录

1、添加Json库

2、数据序列化(对象转 JSON)和反序列化(JSON 转对象)操作

3、序列化 创建和读取Json数据 

创建Json数据  定义一个CreateJson方法

读取 解析 Json数据  定义一个ReadJson方法

4、程序运行结果


在 C# 中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于数据序列化(对象转 JSON)和反序列化(JSON 转对象)操作。

特点类别 具体说明
数据格式 键值对、数组、字符串、数字、布尔值和 null 组成,结构简洁易读,便于解析
核心功能 序列化:将 C# 对象转换为 JSON 字符串(便于存储 / 传输)
反序列化:将 JSON 字符串转换为 C# 对象(便于程序处理)
主流处理库 System.Text.Json:.NET 内置官方库,性能优异,支持多数基础和中等复杂度场景
Newtonsoft.Json(Json.NET):第三方库,功能丰富,兼容性强,适合复杂场景(如自定义转换)
类型映射 需保证 C# 类属性与 JSON 字段在名称、类型上匹配,支持自定义映射配置
结构支持 可处理嵌套对象、多层数组等复杂 JSON 结构,满足多样化数据表示需求
可配置性 支持自定义序列化选项(如日期格式、大小写转换、忽略空值等)

1、添加Json库

点击VS中的解决方案资源管理器,右键项目,选中项目中的管理NuGet程序包

点击浏览,搜索Json,下载下图这个最新版本的Newtonsoft.Json

点击应用

点击已安装查看,安装成功

这个Json库的官网手册链接:Json.NEThttps://www.newtonsoft.com/json/help/html/Introduction.htm#!

2、数据序列化(对象转 JSON)和反序列化(JSON 转对象)操作

首先创建一个Student类

 internal class Student
 {
     public string Name { get; set; }
     public int Id { get; set; }

     public bool Sex { get; set; }

     public string Address { get; set; }

     public Student(string name, int id, bool sex, string address)
     {
         Name = name;
         Id = id;
         Sex = sex;
         Address = address;
     }
 }

创建一个Student类的对象stu1,将对象序列化为Json对象 并将对象中的数据 转化为Json数据储存在字符串ObjJson 中。

JsonConvert.SerializeObject 是第三方库 Newtonsoft.Json(Json.NET 提供的核心方法,用于将 C# 对象序列化为 JSON 字符串。

Student stu1 = new Student("李四", 000000, true, "河南省郑州市高新区");
//将对象 序列化为Json对象  将对象中的数据 转化为Json数据
string ObjJson = JsonConvert.SerializeObject(stu1);

解析对象 反序列化  就是将Json数据 转回为原有类型

JsonConvert.DeserializeObject 是 Newtonsoft.Json(Json.NET)库中用于将 JSON 字符串反序列化为 C# 对象

Student stu = JsonConvert.DeserializeObject<Student>(ObjJson);
//打印解析出的数据
Console.WriteLine(stu);
Console.WriteLine(stu.Name);
Console.WriteLine(stu.Id);
Console.WriteLine(stu.Sex);
Console.WriteLine(stu.Address);

 将对象的数据存储在文件中

 将stu对象的数据 转化为字符串str1存在文件Json数据1.txt中

 string path1 = Directory.GetCurrentDirectory() + "\\Json数据1.txt";
 string str1 = stu.ToString();
 using (StreamWriter sw = new StreamWriter(path1, false))
 {
     sw.WriteLine(stu);
 }

3、序列化 创建和读取Json数据 

主函数

//路径默认运行文件夹   \bin\Debug\net8.0
string path = Directory.GetCurrentDirectory() + "\\Json数据.txt";
//序列化 创建Json数据
CreateJson(path);
//读取Json数据
ReadJson(path);

创建Json数据  定义一个CreateJson方法

public static void CreateJson(string path)
{
    //创建一个Json对象
    JObject J = new JObject();

// 添加数据{ "name":"张三",  "id" : 123456 ,"sex":"男" ,"Color" : ["red","blue","yellow"]}
    //第一种向Json对象中添加数据的方式  索引器
    J["name"] = "张三";
    J["id"] = 123456;
    // 第二种添加数据的方式 Add
    J.Add("sex", "男");
    //第三种 创建一个Json数组 使用Add添加
    JArray Ja = new JArray();
    Ja.Add("red");
    Ja.Add("blue");
    Ja.Add("yellow");
    J.Add("Color", Ja);//键为Color  值为Ja Json数组

其中,JArray 是 Newtonsoft.Json(Json.NET)库中用于处理 JSON 数组的核心类,继承自 JContainer,实现了 IEnumerable<JToken> 接口。它允许开发者在不预先定义实体类的情况下,灵活地创建、解析、修改和查询 JSON 数组,是处理动态或未知结构 JSON 数据的重要工具。

将Json对象的数据 转化为字符串写入  Json数据.txt 文件中

    //将Json对象的数据 转化为字符串
    string str = J.ToString();

    using (StreamWriter sw = new StreamWriter(path, false))
    {
        sw.WriteLine(str);
    }
}

读取 解析 Json数据  定义一个ReadJson方法

public static void ReadJson(string path)
{
    string strjson;
    // 读取Json数据的文件
    using (StreamReader sr = new StreamReader(path))
    {
        //ReadToEnd 一次性读取流或文本中的所有剩余内容,并以字符串形式返回。
        strjson = sr.ReadToEnd();
    }
    //将Json数据格式的字符串 转化为Json对象
    JObject J = JObject.Parse(strjson);

 提取数据

        解析出来之后 使用的话就接收  如果只是看一下数据 直接打印即可

    //引用键,将值转换为字符串打印
    string name = J["name"].ToString();
    Console.WriteLine(name);

    Console.WriteLine(J["id"]);
    Console.WriteLine(J["sex"]);
    Console.WriteLine(J["Color"]);

    //正确读取键Color中的值 Json数组的内容
    foreach (var item in J["Color"])
    {
        Console.WriteLine(item);
    }

    //创建一个数组接收键Color的值,键Color的值是一个数组,这里就相当于数组里面套数组
    JArray ja = new JArray(J["Color"]);
    //[["red","blue","yellow"]]  形成了多维数组了

    //这里遍历只有一个内容 ["red","blue","yellow"]
    foreach (var item in ja)
    {
       Console.WriteLine(item);
    }
}

程序运行结果

写入成功:


网站公告

今日签到

点亮在社区的每一天
去签到