System.Runtime.Serialization 是不够的,还要添加 System.ServiceModel和System.ServiceModel.Web的引用System.Runtime.Serialization.Json 出来了,可以开始对JSON字符串转为实体了。
/// <summary>
/// Serialize T to string /// </summary> /// <param name="item"></param> /// <returns></returns> public static string Serialize<T>(T item) { if (item == null) return string.Empty; var serializer = new DataContractJsonSerializer(item.GetType()); using (var ms = new MemoryStream()) { serializer.WriteObject(ms, item); var sb = new StringBuilder(); sb.Append(Encoding.UTF8.GetString(ms.ToArray())); return sb.ToString(); } } /// <summary> /// Deserialize string back to T /// </summary> /// <param name="jsonString"></param> /// <returns></returns> public static T Deserialize<T>(string jsonString) { if (string.IsNullOrEmpty(jsonString)) return default(T); var ser = new DataContractJsonSerializer(typeof(T)); using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString))) { T jsonObject = (T)ser.ReadObject(ms); return jsonObject; } } Json序列化和反序列化方法
引用空间System.Runtime.Serialization和System.Runtime.Serialization.Json
publicstaticstring ToJsJson(thisobject item)
{ DataContractJsonSerializer serializer =new DataContractJsonSerializer(item.GetType()); using (MemoryStream ms =new MemoryStream()) { serializer.WriteObject(ms, item); StringBuilder sb =new StringBuilder(); sb.Append(Encoding.UTF8.GetString(ms.ToArray())); return sb.ToString(); } } ///<summary> //////</summary> publicstatic T FromJsonTo<T>(thisstring jsonString) { DataContractJsonSerializer ser =new DataContractJsonSerializer(typeof(T)); MemoryStream ms =new MemoryStream(Encoding.UTF8.GetBytes(jsonString)); T jsonObject = (T)ser.ReadObject(ms); ms.Close(); return 实体类 }
|
|