c#中对object进行序列化和反序列化
程序员文章站
2022-06-15 20:21:49
...
有时候我们需要对一些数据进行二进制序列化以达到保存或传输的目的,这里记录一下对object的序列化和反序列化操作。
首先引入命名空间:
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
object的序列化和反序列化 public static byte[] SerializeObject(object obj)
{
if (obj == null)
return null;
//内存实例
MemoryStream ms = new MemoryStream();
//创建序列化的实例
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(ms, obj);//序列化对象,写入ms流中
byte[] bytes = ms.GetBuffer();
return bytes;
}
public static object DeserializeObject(byte[] bytes)
{
object obj = null;
if (bytes == null)
return obj;
//利用传来的byte[]创建一个内存流
MemoryStream ms = new MemoryStream(bytes);
ms.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(ms);//把内存流反序列成对象
ms.Close();
return obj;
}
测试:
public static void SerializeDicTest(){
Dictionary<string, int> test = new Dictionary<string, int>();
test.Add("1",1);
test.Add("2",2);
test.Add("3",4);
byte[] testbyte = Tools.SerializeObject(test);
Dictionary<string, int> testdic = (Dictionary<string, int>)Tools.DeserializeObject(testbyte);
Debug.Log("[SerializeDicTest] : " + testdic["3"]);
}
结果:
注意:需要序列化的类一定要使用[Serializable]对其进行标记.
上一篇: 中兴MC8020路由器值得买吗 中兴MC8020路由器详细评测
下一篇: 真准啊