123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- 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
- {
- /// <summary>
- /// JSON,XML和实体相互转换
- /// </summary>
- public class SerializationHelper
- {
- /// <summary>
- /// 将对象根据格式(XML/JSON)序列化成字符串结果
- /// </summary>
- /// <param name="o">目标对象</param>
- /// <param name="format">输出格式</param>
- /// <returns></returns>
- public static string Serialize(object o, Format format)
- {
- return format == Format.Xml ? XmlSerialize(o) : ObjectToJson(o);
- }
- /// <summary>
- /// 将字符串根据格式(XML/JSON)反序列化成指定类型的对象
- /// </summary>
- /// <typeparam name="T">指定类型</typeparam>
- /// <param name="s">目标字符串</param>
- /// <param name="format">输入格式</param>
- /// <returns></returns>
- public static T Deserialize<T>(string s, Format format)
- {
- return format == Format.Xml ? XmlDeserial<T>(s) : JsonToObject<T>(s);
- }
- /// <summary>
- /// XML转实体
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="xml"></param>
- /// <returns></returns>
- public static T XmlDeserialize<T>(string xml)
- {
- return XmlDeserial<T>(xml);
- }
- /// <summary>
- /// 对象转JSON
- /// </summary>
- /// <param name="obj">对象</param>
- /// <returns>JSON格式的字符串</returns>
- 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);
- }
- }
- /// <summary>
- /// 实体转成XML格式
- /// </summary>
- /// <param name="o"></param>
- /// <returns></returns>
- 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();
- }
- }
- }
- /// <summary>
- /// JSON转实体
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="jsonText"></param>
- /// <returns></returns>
- private static T JsonToObject<T>(string jsonText)
- {
- var jss = new JavaScriptSerializer();
- try
- {
- return !string.IsNullOrEmpty(jsonText) ? jss.Deserialize<T>(jsonText) : default(T);
- }
- catch (Exception ex)
- {
- throw new Exception("JSONToObject(): " + ex.Message);
- }
- }
- /// <summary>
- /// XML转实体
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="s"></param>
- /// <returns></returns>
- private static T XmlDeserial<T>(string s)
- {
- var xdoc = new XmlDocument();
- try
- {
- string str = "<?xml version='1.0' encoding='utf-8'?><AppSettings>" + s + "</AppSettings>";
- 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);
- }
- /// <summary>
- /// JOSN数据过滤
- /// </summary>
- /// <param name="s"></param>
- /// <returns></returns>
- 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
- }
-
- }
|