C#实现对象序列化的3种方案小结

 更新时间:2025年01月21日 10:22:52   作者:上位机付工  
在上位机开发过程中,我们可能经常要实现一个数据对象的持久化,本文主要介绍了C#实现对象序列化的3种方案,具有一定的参考价值,感兴趣的可以了解一下

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

一、准备工作

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

图片

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

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

图片

二、二进制序列化

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

图片

反序列化方法代码如下:

图片

测试结果如下:

图片

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

三、Xml序列化

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

图片

反序列化方法代码如下:

图片

测试结果如下:

图片

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

四、Json序列化

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

图片

测试结果如下:

图片

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

到此这篇关于C#实现对象序列化的3种方案小结的文章就介绍到这了,更多相关C# 对象序列化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#使用NPOI实现Excel和DataTable的互转

    C#使用NPOI实现Excel和DataTable的互转

    这篇文章主要为大家详细介绍了C#使用NPOI实现Excel和DataTable的互转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#中Razor模板引擎简单使用

    C#中Razor模板引擎简单使用

    Razor 是一种标记语法,可以让您将基于服务器的代码(Visual Basic 和 C#)嵌入到网页中,本文给大家介绍了C#中Razor模板引擎简单使用,需要的朋友可以参考下
    2022-02-02
  • C#判断指定驱动器是否已经准备就绪的方法

    C#判断指定驱动器是否已经准备就绪的方法

    这篇文章主要介绍了C#判断指定驱动器是否已经准备就绪的方法,涉及C#针对硬件IO操作的技巧,需要的朋友可以参考下
    2015-04-04
  • C# 如何在MVC3中取消备用控制器的选择

    C# 如何在MVC3中取消备用控制器的选择

    本篇文章介绍了,如何在MVC3中取消备用控制器的选择的详细分析。需要的朋友参考下
    2013-05-05
  • C#实现WinForm控件焦点的获取与失去

    C#实现WinForm控件焦点的获取与失去

    在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨 Winform 控件获取与失去焦点的相关知识,需要的朋友可以参考下
    2025-01-01
  • c# 使用OpenCV识别硬币

    c# 使用OpenCV识别硬币

    这篇文章主要介绍了c# 使用OpenCV识别硬币的方法,帮助大家更好的利用c#进行深度学习,感兴趣的朋友可以了解下
    2020-12-12
  • C# FileStream复制大文件功能

    C# FileStream复制大文件功能

    这篇文章主要为大家详细介绍了C# FileStream复制大文件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • C#实现实体类和XML相互转换

    C#实现实体类和XML相互转换

    这篇文章主要为大家详细介绍了C#实现实体类和XML相互转换的资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 深入c# GDI+简单绘图的具体操作步骤(三)

    深入c# GDI+简单绘图的具体操作步骤(三)

    前两篇已经基本向大家介绍了绘图的基本知识.那么,我就用我们上两篇所学的,做几个例子.我们先来做一个简单的--仿QQ截图
    2013-05-05
  • C#生成影像金字塔的原理实例

    C#生成影像金字塔的原理实例

    最近在处理一个关于影像金字塔的问题,这个金字塔程序是用C#写的,需要的朋友可以参考一下
    2013-05-05

最新评论