可以';t从根据字符串创建的流中反序列化对象
本文关键字:创建 对象 反序列化 字符串 可以 | 更新日期: 2023-09-27 18:28:24
我想创建一个将对象序列化到文件的方法。然后我读取文件并获得字符串形式的内容。我将字符串保存在数据库中,然后从数据库中读取字符串,并将其反序列化到对象
我几乎做到了,但我得到了错误的there is no map for object
这就是我序列化对象的方式
public static String Serialize(Object toSerialize)
{
Random random = new Random();
int randomNumber = random.Next(100000, 1000000000);
String fileName = randomNumber + ".txt";
fileName = "EmployeeInfo.txt";
Stream stream = File.Open(fileName, FileMode.Create);
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, toSerialize);
stream.Close();
String fileContent = File.ReadAllText(fileName);
return fileContent;
}
这就是我如何将字符串转换为流以反序列化
String serialized = Serializer.Serialize(user);
MemoryStream mStream = new MemoryStream();
StreamWriter writer = new StreamWriter(mStream);
writer.Write(serialized);
writer.Flush();
mStream.Position = 0;
现在反序列化
public static Object Deserialize(Stream stream)
{
Object returnObject;
BinaryFormatter bformatter = new BinaryFormatter();
returnObject = (Object)bformatter.Deserialize(stream);
stream.Close();
return returnObject;
}
我哪里搞错了?我应该做些什么才能让它发挥作用?
得到了答案。
首先感谢@I4V的评论:
这是我的序列化方法
public static String Serialize(Object toSerialize)
{
Random random = new Random();
int randomNumber = random.Next(100000, 1000000000);
String fileName = randomNumber + ".txt";
fileName = "EmployeeInfo.txt";
MemoryStream stream = new MemoryStream();
BinaryFormatter bformatter = new BinaryFormatter();
bformatter.Serialize(stream, toSerialize);
String fileContent = Convert.ToBase64String(stream.ToArray());
stream.Close();
return fileContent;
}
现在可以从字符串反序列化对象的方法Deserialize
public static Object Deserialize(String stringObject)
{
Object returnObject;
byte[] bytes = Convert.FromBase64String(stringObject);
MemoryStream stream = new MemoryStream(bytes);
BinaryFormatter bformatter = new BinaryFormatter();
returnObject = bformatter.Deserialize(stream);
return returnObject;
}
这就是