在上位机开发过程中,我们可能经常要实现一个数据对象的持久化,将对象保存到具体的文件中,今天给大家介绍常用的3种方案,大家根据实际情况,选择适合的方案。
一、准备工作
在介绍这4种方案之前,我们以西门子plc信息存储为例,先提前准备好一个类——plcinfo,代码如下所示:
我们通过序列化可以将对象转换成一个字符串进行存储,同时通过反序列化可以将该字符串转成一个对象,对象序列化与反序列化是一个相互转换的过程。
在上面的代码中,为了可以观察到反序列化的结果,我们在该实体类中重写一下tostring方法,然后实例化一个plcinfo对象,后续就针对这个对象进行操作,代码如下所示:
二、二进制序列化
二进制序列化及反序列化的方式主要是使用binaryformatter这个类,序列化方法代码如下:
反序列化方法代码如下:
测试结果如下:
分析:我们可以看到二进制序列化的结果是一串乱码,但是可以正常反序列化成一个对象。通过二进制序列化的优势是比较简单,甚至还能加密,但是劣势在于结果比较长,可读性比较差,在实体类中要加个[serializable]特性标识。
三、xml序列化
xml序列化及反序列化的方式主要是使用xmlserializer这个类,序列化方法代码如下:
反序列化方法代码如下:
测试结果如下:
分析:我们可以看到xml序列化的结果可读性比二进制要好很多,但是相比后面的json还是相对复杂一些。
四、json序列化
json序列化及反序列化的方式主要是使用newtonsoft.json这个库,可以通过nuget安装,并添加引用,使用非常简单,序列化及反序列化方法代码如下:
测试结果如下:
分析:我们可以看到json序列化的结果相对于xml来说要更加简洁一些,这也是为什么json使用越来越多的原因。
到此这篇关于c#实现对象序列化的3种方案小结的文章就介绍到这了,更多相关c# 对象序列化内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论