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

基于C#实现对象序列化的3种方案

大家好!我是付工。

在上位机开发过程中,我们可能经常要实现一个数据对象的持久化,将对象保存到具体的文件中,今天给大家介绍常用的3种方案,大家根据实际情况,选择适合的方案。

一、准备工作

在介绍这4种方案之前,我们以西门子PLC信息存储为例,先提前准备好一个类——PLCInfo,代码如下所示:

图片

我们通过序列化可以将对象转换成一个字符串进行存储,同时通过反序列化可以将该字符串转成一个对象,对象序列化与反序列化是一个相互转换的过程。

在上面的代码中,为了可以观察到反序列化的结果,我们在该实体类中重写一下ToString方法,然后实例化一个PLCInfo对象,后续就针对这个对象进行操作,代码如下所示:

图片

二、二进制序列化

二进制序列化及反序列化的方式主要是使用BinaryFormatter这个类,序列化方法代码如下:

图片

反序列化方法代码如下:

图片

测试结果如下:

图片

分析:我们可以看到二进制序列化的结果是一串乱码,但是可以正常反序列化成一个对象。通过二进制序列化的优势是比较简单,甚至还能加密,但是劣势在于结果比较长,可读性比较差,在实体类中要加个[Serializable]特性标识。

三、Xml序列化

Xml序列化及反序列化的方式主要是使用XmlSerializer这个类,序列化方法代码如下:

图片

反序列化方法代码如下:

图片

测试结果如下:

图片

分析:我们可以看到Xml序列化的结果可读性比二进制要好很多,但是相比后面的Json还是相对复杂一些。

四、Json序列化

Json序列化及反序列化的方式主要是使用Newtonsoft.Json这个库,可以通过Nuget安装,并添加引用,使用非常简单,序列化及反序列化方法代码如下:

图片

测试结果如下:

图片

分析:我们可以看到Json序列化的结果相对于Xml来说要更加简洁一些,这也是为什么Json使用越来越多的原因。

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

相关文章:

  • 蓝桥杯真题 - 公因数匹配 - 题解
  • 使用 Java 实现基于 DFA 算法的敏感词检测
  • Jenkins-Pipeline简述
  • Linux操作命令之云计算基础命令
  • 【postgres】sqlite格式如何导入postgres数据库
  • 阀井可燃气体监测仪,开启地下管网安全新篇章-旭华智能
  • 《offer 来了:Java 面试核心知识点精讲 -- 原理篇》
  • 搭建一个基于Spring Boot的数码分享网站
  • K210视觉识别模块
  • JAVA:在IDEA引入本地jar包的方法(不读取maven目录jar包)
  • 存在重复元素(217)
  • 聊聊如何实现Android 放大镜效果
  • linux 安装mysql5.6
  • 【Vue3 入门到实战】3. ref 和 reactive区别和适用场景
  • edge浏览器恢复旧版滚动条
  • Flink(十):DataStream API (七) 状态
  • AWTK fscript 中的 输入/出流 扩展函数
  • C# OpenCvSharp 部署3D人脸重建3DDFA-V3
  • 【人工智能】:搭建本地AI服务——Ollama、LobeChat和Go语言的全方位实践指南
  • 数据结构——堆(介绍,堆的基本操作、堆排序)
  • Excel中函数ABS( )的用法
  • 【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验
  • Windows下的C++内存泄漏检测工具Visual Leak Detector (VLD)介绍及使用
  • [苍穹外卖] 1-项目介绍及环境搭建
  • 人物一致性训练测评数据集
  • AI的出现,是否能替代IT从业者?
  • 乘联会:1月汽车零售预计175万辆 环比暴跌33.6%
  • LLM - 大模型 ScallingLaws 的 CLM 和 MLM 中不同系数(PLM) 教程(2)
  • 开发神器之cursor
  • 使用 Ansys Motor-CAD 的自适应模板加速创新