我有以下两个函数:
public static string Serialize(object obj)
{
DataContractSerializer serializer = new DataContractSerializer(obj.GetType());
MemoryStream memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, obj);
return Encoding.UTF8.GetString(memoryStream.GetBuffer());
}
public static object Deserialize(string xml, Type toType)
{
MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml));
// memoryStream.Position = 0L;
XmlDictionaryReader reader = XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.UTF8, new XmlDictionaryReaderQuotas(), null);
DataContractSerializer dataContractSerializer = new DataContractSerializer(toType);
return dataContractSerializer.ReadObject(reader);
}第一个似乎可以很好地将对象序列化为xml字符串。XML看起来是有效的,没有断开的标记,开头或结尾没有空格,等等。现在,第二个函数不想将xml字符串反序列化为对象。在我得到的最后一行:
在反序列化MY object类型的对象时出错。根级别的数据无效。行1,位置1。
我做错了什么?我尝试了几次重写反序列化函数,似乎总是出现同样的错误。谢谢!
哦,这就是我调用这两个函数的方式:
SomeObject so = new SomeObject();
string temp = SerializationManager.Serialize(so);
so = (SomeObject)SerializationManager.Deserialize(temp, typeof(SomeObject));https://stackoverflow.com/questions/5010191
复制相似问题