C#的JSON序列化与反序列化

news/2024/10/17 22:03:00/
前言

记录使用C#进行json序列化和反序列化方法

一、序列化

序列化,即将数据组织成某种形式,存储在变量或文件中,是保存数据的一种方式。
下面以数组的形式存放数据,以字典的形式组织数据,将组织好的数据存放在json文件中。

using System.Collections.Generic;
using Newtonsoft.Json;namespace MyConsoleAppTest
{class Program{private bool SaveJsonFile(){// 建立数据float[] lons = new float[4]{102.1f, 102.2f, 102.3f, 102.4f};float[] lats = new float[4]{34.1f, 34.2f, 34.3f, 34.4f};int[] values = new int[4]{1, 2, 3, 4};string[] levels = new string[4]{"1", "2", "3", "4"};Dictionary<string, object> dicValues = new Dictionary<string, object>();dicValues.Add("lon", lons);dicValues.Add("lat", lats);dicValues.Add("value", values);dicValues.Add("level", levels);// 序列化string result = JsonConvert.SerializeObject(dicValues);//存储,位置可以自行设置using(System.IO.StreamWriter sw = new System.IO.StreamWriter(@"E:\..\..\example.json"));{sw.Write(result);sw.close();}return true;}static void Main(string[] args){Program p = new Program();p.SaveJsonFile();}}
}

运行程序,输出结果使用VScode打开所保存目录下的json文件,内容如下图所示。
在这里插入图片描述

二、反序列化

反序列化是序列化的反过程,将JSON文件中的所需数据解析 出来使用。

using System.Collections.Generic;
uusing Newtonsoft.Json;namespace MyConsoleAppTest
{class Program{private bool ReadJsonFile(){// 读取文件string jsonContent = string.Empty;using(System.IO.StreamReader sr = new System.IO.StreamReader(@"E:\..\..\example.json")){jsonContent = sr.ReadToEnd();}// 反序列化var resultArr = JsonConvert.DeserializeObject<MyClass>(jsoncontent);return true;}static void Main(string[] args){Program p = new Program();p.ReadJsonFile();}}public class MyClass{public float[] lon {set; get;}public float[] lat {set; get;}public float[] value {set; get;}public float[] level {set; get;}}
}

注意:代码中的value字段需要重新命名,和系统变量是应该重名了。
反序列化和序列化皆可使用类来定义字段。

END
参考资料
  • https://learn.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json/deserialization?pivots=dotnet-8-0

http://www.ppmy.cn/news/1539815.html

相关文章

外包干了5天,技术明显退步

我是一名本科生&#xff0c;自2019年起&#xff0c;我便在南京某软件公司担任功能测试的工作。这份工作虽然稳定&#xff0c;但日复一日的重复性工作让我逐渐陷入了舒适区&#xff0c;失去了前进的动力。两年的时光匆匆流逝&#xff0c;我却在原地踏步&#xff0c;技术没有丝毫…

单元测试一篇汇总

简介 测试在软件开发中是一个很重要的方面&#xff0c;良好的测试可以在很大程度决定一个应用的命运。 软件测试中&#xff0c;主要有3大种类&#xff1a; 单元测试 单元测试主要是用于测试程序模块&#xff0c;确保代码运行正确。单元测试是由开发者编写并进行运行测试。一般…

MTK免USB线实现WIFI Adb连接

文章目录 需求场景重置tcpip服务产品定义 实现方案修改文件修改内容 关联知识点总结 需求 MTK 平台在不用USB线的情况下&#xff0c;实现wifi adb 连接设备&#xff0c;从而进行调试操作。 场景 重置tcpip服务 MTK产品不像RK、全志系统产品&#xff0c;电脑和Android设备同一…

界面控件DevExpress WinForms v24.1新版亮点 - 可访问性和UI自动化增强

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

python教程:python中的引用及其对引用的所有操作

在 Python 中&#xff0c;引用指的是变量指向对象的机制。Python 中的所有变量都是引用&#xff0c;即变量名并不直接存储对象的值&#xff0c;而是指向存储对象的内存地址。因此&#xff0c;多个变量可以同时引用同一个对象&#xff0c;从而共享对同一个数据的修改。 Python …

C#中,重载(overload) 重写(override)的应用说明

一.重载(overload)& 重写(override)定义说明 1.重载(overload)& 重写(override) 1.1重载(overload)&#xff1a;指的是在同一个类中定义多个具有相同名称但参数列表不同的方法。通过参数列表的不同&#xff0c;编译器能够区分这些方法&#xff0c;并根据调用时传递的…

SpringBoot发送邮箱

一、导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency> 二、添加配置 application.yml文件 将username修改为自己的邮箱&#xff0c;password修改为…

【JavaScript】关于使用JS对word文档实现预览的一些思考

文章目录 mammothdocx4js mammoth 官网地址&#xff1a;https://github.com/mwilliamson/mammoth.js#readme 安装mammoth&#xff1a; npm i mammoth -S我们可以安装mammoth来实现上传的word文件的在线预览&#xff0c;我们以element的上传组件为示例&#xff1a; <temp…