C#序列化反序列化对象为base64字符串
生活随笔
收集整理的這篇文章主要介紹了
C#序列化反序列化对象为base64字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
之所以序列化為base64 字符串 方便傳輸,可存儲在本地 也可以是服務器
?
public class Serializer{private Serializer() { }public static string Serialize<T>(T obj){try{IFormatter formatter = new BinaryFormatter();MemoryStream stream = new MemoryStream();formatter.Serialize(stream, obj);stream.Position = 0;byte[] buffer = new byte[stream.Length];stream.Read(buffer, 0, buffer.Length);stream.Flush();stream.Close();return Convert.ToBase64String(buffer);}catch (Exception ex){Debug.LogError(" Serialize error " + ex.Message);return null;}}public static T Deserialize<T>(string str){T obj = default(T);try{IFormatter formatter = new BinaryFormatter();byte[] buffer = Convert.FromBase64String(str);MemoryStream stream = new MemoryStream(buffer);obj = (T)formatter.Deserialize(stream);stream.Flush();stream.Close();}catch (Exception ex){Debug.LogError(" Serialize error " + ex.Message);return obj;}return obj;}//將一組array 對象 序列化為 基于base64的存儲stringpublic static string SerializeMulti<T>(IEnumerable objs){string ser_str = "";foreach (T data in objs){string str = Serialize<T>(data);ser_str += str + SPLIT_FLAG_BASE64;}return ser_str;}//從 字符串 反序列化出對象數組public static ArrayList DeserializeMulti<T>(string ser_str) where T : new(){ArrayList ret = new ArrayList();if (string.IsNullOrEmpty(ser_str)){return ret;}string[] strs = ser_str.Split(SPLIT_FLAG_BASE64);if (strs.Length <= 0) return ret;foreach (string s in strs){if (string.IsNullOrEmpty(s)) continue;var obj = Deserialize<T>(s);ret.Add(obj);}return ret;}public const char SPLIT_FLAG_BASE64 = (char)111;//base64 生成的間隔標識符數值 只要不是base64 生成的char 都可以當做間隔符}?
轉載于:https://my.oschina.net/kkkkkkkkkkkkk/blog/1499345
總結
以上是生活随笔為你收集整理的C#序列化反序列化对象为base64字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算革命对国际关系的影响
- 下一篇: 跨域理解及服务器端解决跨域问题