当前位置: 首页 > news >正文

C# _Json数据

目录

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;// 第二种添加数据的方式 AddJ.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);}
}

程序运行结果

写入成功:

http://www.lryc.cn/news/607300.html

相关文章:

  • 仿艾莫迅MODBUS调试工具写一个上位机
  • 基于springboot的快递分拣管理系统
  • 【智能协同云图库】第七期:基于AI调用阿里云百炼大模型,实现AI图片编辑功能
  • 【AI 加持下的 Python 编程实战 2_12】第九章:繁琐任务的自动化(上)——自动清理电子邮件文本
  • 【Linux学习|黑马笔记|Day1】Linux初识、安装VMware Workstation、安装CentOS7、远程连接、虚拟机快照
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现围栏羊驼的检测识别(C#代码,UI界面版)
  • 标准项目-----网页五子棋(4)-----游戏大厅+匹配+房间代码
  • AJAX快速入门 - 四个核心步骤
  • HTML无尽射击小游戏包含源码,纯HTML+CSS+JS
  • 【Flutter】内存泄漏总结
  • 【数据可视化-78】2025年上半年广东省各市GDP排名深度解析与可视化:Python + Pyecharts 深度洞察(含完整数据、代码)
  • OpenVLA: 论文阅读 -- 开源视觉-语言-行动模型
  • ZKmall开源商城微服务架构电商平台:服务注册与配置中心设计
  • Spring Boot 整合量子密钥分发(QKD)实验方案
  • Linux---make和makefile
  • 分布在背侧海马体CA1区域的位置细胞(place cells)对NLP中的深层语义分析的积极影响和启示
  • 面试题:怎么理解 OSI 参考模型(开放式系统互联参考模型) 和 TCP/IP 模型(传输控制协议 / 网际协议模型 )
  • 【vue】Vue 项目创建工具对比:vue create 与 create-vue 的核心区别
  • RAGFLOW~knowledge graph
  • k8s部署mysql
  • 【数论】P8954 「VUSC」Math Game|普及+
  • SpringBoot3.x入门到精通系列:1.5 配置文件详解
  • QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。
  • 京东零售在智能供应链领域的前沿探索与技术实践
  • 【Kubernetes 指南】基础入门——Kubernetes 集群(二)
  • Java抽象类与接口深度解析:核心区别与应用场景全指南
  • 四类屏幕录制方案的技术选型指南
  • 神经网络学习笔记
  • 流式编程的中间操作
  • 带root权限_中国移动创维DT541_S905L3融合机器改机顶盒刷机教程 当贝纯净版安卓9.0系统线刷包 刷机包