C#中序列化的使用总结
导读:收集整理的这篇文章主要介绍了C#中序列化的使用总结,觉得挺不错的,现在分享给大家,也给大家做个参考。贴一下自己序列化的代码:public class XMLUtil { /// <summary>...
收集整理的这篇文章主要介绍了C#中序列化的使用总结,觉得挺不错的,现在分享给大家,也给大家做个参考。贴一下自己序列化的代码:public class XMLUtil {
/// summary>
/// XML &
Datacontract Serialize &
Deserialize HelPEr /// /summary>
/// typeparam name="T">
/typeparam>
/// param name="serialObject">
/param>
/// returns>
/returns>
public static string SerializerT>
(T serialObject) where T : class {
string result = string.Empty;
using (MemoryStream mem = new MemoryStream()) {
using (XmlTextWrITer writer = new XmlTextWriter(mem, Encoding.UTF8)) {
System.Xml.Serialization.XmlSerializer ser = new System.Xml.Serialization.XmlSerializer(typeof(T));
ser.Serialize(writer, serialObject);
result = Encoding.UTF8.GetString(mem.ToArray());
}
}
return result;
}
public static T DeserializeT>
(string str) where T : class {
T result = null;
using (MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(str))) {
using (StreamReader streamReader = new StreamReader(memoryStream)) {
System.Xml.Serialization.XmlSerializer xmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(T));
result = (T)xmlSerializer.Deserialize(memoryStream);
}
}
return result;
}
}
上面的写法持续序列化不会有内存溢出的性能问题,之前一直被告知直接引用公司某位老鸟封装好的dll来序列化,后来发现了老是出现内存溢出,贴一下它的错误写法,仅供吸取教训:
public class XMLUtil {
/// summary>
/// XML &
Datacontract Serialize &
Deserialize Helper /// /summary>
/// typeparam name="T">
/typeparam>
/// param name="serialObject">
/param>
/// returns>
/returns>
public static string SerializerT>
(T serialObject) where T : class {
//try //{
XmlSerializer ser = new XmlSerializer(typeof(T));
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
ser.Serialize(writer, serialObject);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
//}
//catch (Exception ex) //{
// return null;
//}
}
public static T DeserializeT>
(string str) where T : class {
//try //{
XmlSerializer mySerializer = new XmlSerializer(typeof(T));
StreamReader mem2 = new StreamReader( new MemoryStream(System.Text.Encoding.UTF8.GetBytes(str)), System.Text.Encoding.UTF8);
return (T)mySerializer.Deserialize(mem2);
//}
//catch (Exception) //{
// return null;
//}
}
//public static string Json_SerializeObject(object value) //{
// return Newtonsoft.Json.JsonConvert.SerializeObject(value);
//}
//public static object Json_DeserializeObject(string value) //{
// return Newtonsoft.Json.JsonConvert.DeserializeObject(value);
//}
//public static T Json_DeserializeObjectT>
(string value) //{
// return Newtonsoft.Json.JsonConvert.DeserializeObjectT>
(value);
//}
}
以上就是C#中序列化的使用总结的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C#中序列化的使用总结
本文地址: https://pptw.com/jishu/592743.html
