c#中JSON与Class的转换,包括序列化的库
1 public class SerializableUtility 2 { 3 public static MemoryStream Serialize(object _obj) 4 { 5 BinaryFormatter formater = new BinaryFormatter(); 6 MemoryStream ms = new MemoryStream(); 7 formater.Serialize(ms, _obj); 8 9 return ms; 10 } 11 12 public static T DeSerialize<T>(byte[] _byte) 13 { 14 T t = default(T); 15 16 BinaryFormatter formater = new BinaryFormatter(); 17 MemoryStream ms = new MemoryStream(_byte); 18 t = (T)formater.Deserialize(ms); 19 20 return t; 21 } 22 }
1 public class JSONUtility 2 { 3 public static string Serialize<T>(T t) 4 { 5 if (t == null) return string.Empty; 6 JavaScriptSerializer Serializer = new JavaScriptSerializer(); 7 return Serializer.Serialize(t); 8 } 9 10 public static List<T> DeSerializeToList<T>(string JsonStr) 11 { 12 List<T> objs = new List<T>(); 13 try 14 { 15 if (!string.IsNullOrEmpty(JsonStr)) 16 { 17 JavaScriptSerializer Serializer = new JavaScriptSerializer(); 18 objs = Serializer.Deserialize<List<T>>(JsonStr); 19 } 20 } 21 catch (System.Exception ex) 22 { 23 objs = null; 24 } 25 return objs; 26 } 27 28 public static T DeSerialize<T>(string json) 29 { 30 T obj = Activator.CreateInstance<T>(); 31 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json))) 32 { 33 System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType()); 34 return (T)serializer.ReadObject(ms); 35 } 36 } 37 38 }
使用:
1 [Serializable] 2 public class Permission 3 { 4 public int ModuleID; 5 public string ModulePermission; 6 }
1 string JsonPermisstion="[{\"ModuleID\":110,\"ModulePermission\":\"read\"},{\"ModuleID\":120,\"ModulePermission\":\"read\"},{\"ModuleID\":210,\"ModulePermission\":\"denied\"},{\"ModuleID\":220,\"ModulePermission\":\"denied\"}]"; 2 3 List<Permission> PermissionList = JSONUtility.DeSerializeToList<Permission>(JsonPermisstion);
string PermissionStr=JSONUtility.Serialize<List<Permission>>(PermissionList)