using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; using System.Web.Script.Serialization; using System.Xml; using System.Xml.Serialization; using System.IO; using System.ComponentModel; namespace Ant.Common { /// /// JSON,XML和实体相互转换 /// public class SerializationHelper { /// /// 将对象根据格式(XML/JSON)序列化成字符串结果 /// /// 目标对象 /// 输出格式 /// public static string Serialize(object o, Format format) { return format == Format.Xml ? XmlSerialize(o) : ObjectToJson(o); } /// /// 将字符串根据格式(XML/JSON)反序列化成指定类型的对象 /// /// 指定类型 /// 目标字符串 /// 输入格式 /// public static T Deserialize(string s, Format format) { return format == Format.Xml ? XmlDeserial(s) : JsonToObject(s); } /// /// XML转实体 /// /// /// /// public static T XmlDeserialize(string xml) { return XmlDeserial(xml); } /// /// 对象转JSON /// /// 对象 /// JSON格式的字符串 private static string ObjectToJson(object obj) { var jss = new JavaScriptSerializer(); try { return jss.Serialize(obj); } catch (Exception ex) { throw new Exception("JSONHelper.ObjectToJSON(): " + ex.Message); } } /// /// 实体转成XML格式 /// /// /// private static string XmlSerialize(object o) { using (var ms = new MemoryStream()) { var serializer = new XmlSerializer(o.GetType()); serializer.Serialize(ms, o); ms.Seek(0, SeekOrigin.Begin); using (var reader = new StreamReader(ms, Encoding.UTF8)) { return reader.ReadToEnd(); } } } /// /// JSON转实体 /// /// /// /// private static T JsonToObject(string jsonText) { var jss = new JavaScriptSerializer(); try { return !string.IsNullOrEmpty(jsonText) ? jss.Deserialize(jsonText) : default(T); } catch (Exception ex) { throw new Exception("JSONToObject(): " + ex.Message); } } /// /// XML转实体 /// /// /// /// private static T XmlDeserial(string s) { var xdoc = new XmlDocument(); try { string str = "" + s + ""; xdoc.LoadXml(str); if (xdoc.DocumentElement != null) { var reader = new XmlNodeReader(xdoc.DocumentElement); var ser = new XmlSerializer(typeof(T)); var obj = ser.Deserialize(reader); return (T)obj; } } catch (Exception ex) { return default(T); } return default(T); } /// /// JOSN数据过滤 /// /// /// public static string stringToJson(string s) { //Microsoft.JScript.GlobalObject.escape(strJS); string sb = ""; sb=s.Replace("/", "\\/"); sb = sb.Replace("\"", "\\\""); sb = sb.Replace("\b", "\\b"); sb = sb.Replace("\f", "\\f"); sb = sb.Replace("\n", "\\n"); sb = sb.Replace("\r", "\\r"); sb = sb.Replace("\t", "\\t"); return sb; } } public enum Format { [Description("Xml")] Xml = 1, [Description("Json")] Json = 2 } }