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

基于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.kler.cn/a/509544.html

相关文章:

  • leetcode707-设计链表
  • Linux虚拟化技术:从Xen到KVM
  • 4.Spring AI Prompt:与大模型进行有效沟通
  • Java语言的数据结构
  • 源码编译安装httpd 2.4,提供系统服务管理脚本并测试
  • 【时时三省】(C语言基础)柔性数组的使用
  • 机器人传动力系统介绍
  • 一文读懂iOS中的Crash捕获、分析以及防治
  • 高斯数据库 Shell 脚本:批量执行 SQL 文件
  • C++ 成员初始化列表
  • 二、点灯基础实验
  • Unreal Engine 5 C++ Advanced Action RPG 九章笔记
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
  • 搜维尔科技提供完整的人形机器人解决方案以及训练系统
  • 机器学习加州房价预测模型报告
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 13-1类与对象
  • 【21】Word:德国旅游业务❗
  • 游戏引擎学习第81天
  • 探索 Transformer²:大语言模型自适应的新突破
  • wow-agent---task2使用llama-index创建Agent
  • Ubuntu 空闲硬盘挂载到 文件管理器的 other locations
  • Apache 如何设置 Upgrade-Insecure-Requests 报头 ?
  • 用于零镜头视频对象分割的深度感知测试时训练
  • PyTorch基本功能与实现代码
  • 浙江安吉成新照明电器:Acrel-1000DP 分布式光伏监控系统应用探索