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
}
}