NET JSON XML帮助类

来源:互联网 发布:ugui scrollview优化 编辑:程序博客网 时间:2024/06/08 22:03

NET JSON除了油实体类转换DLL之外,还有动态的,也就是NET本身自己就支持的东西,顺便提一下使用WebService的时候,哪里需要Webservice的方法 哪里的config里面就要配置Models 也就是 第一次引用的时候自动生成的那一段东东

 

XML的

using System;using System.Collections.Generic;using System.Dynamic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Xml.Linq;namespace Zemt.BPM.Common{    public static class XmlUtil    {        public static string ToXml(dynamic dynamicObject)        {            DynamicXElement xmlNode = dynamicObject;            return xmlNode.XContent.ToString();        }        public static dynamic ToObject(string xml, dynamic dynamicResult)        {            XElement element = XElement.Parse(xml);            dynamicResult = new DynamicXElement(element);            return dynamicResult;        }        public static dynamic ToObject(string xml)        {            XElement element = XElement.Parse(xml);            dynamic dynamicResult = new DynamicXElement(element);            return dynamicResult;        }    }    public class DynamicXElement : DynamicObject    {        public DynamicXElement(XElement node)        {            this.XContent = node;        }        public DynamicXElement()        {        }        public DynamicXElement(String name)        {            this.XContent = new XElement(name);        }        public XElement XContent        {            get;            private set;        }        public override bool TrySetMember(            SetMemberBinder binder, object value)        {            XElement setNode = this.XContent.Element(binder.Name);            if (setNode != null)                setNode.SetValue(value);            else            {                //creates an XElement without a value.                if (value.GetType() == typeof(DynamicXElement))                    this.XContent.Add(new XElement(binder.Name));                else                    this.XContent.Add(new XElement(binder.Name, value));            }            return true;        }        public override bool TryGetMember(            GetMemberBinder binder, out object result)        {            XElement getNode = this.XContent.Element(binder.Name);            IList<XElement> nodes = this.XContent.Elements(binder.Name).ToList<XElement>();            if (nodes.Count == 1)            {                result = new DynamicXElement(getNode);            }            else if(nodes.Count > 1)            {                IList<DynamicXElement> des = new List<DynamicXElement>();                foreach (var e in nodes)                {                    des.Add(new DynamicXElement(e));                }                result = des;            }            else            {                result = new DynamicXElement(binder.Name);            }            return true;        }        public override bool TryConvert(    ConvertBinder binder, out object result)        {            if (binder.Type == typeof(String))            {                result = this.XContent.Value;                return true;            }            else            {                result = null;                return false;            }        }    }}


 

JSON的

using System;using System.Collections;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Web.Script.Serialization;namespace Zemt.BPM.Common{    public static class JsonUtil    {        #region DataTable 转换为Json 字符串        /// <summary>        /// DataTable 对象 转换为Json 字符串        /// </summary>        /// <param name="dt"></param>        /// <returns></returns>        public static string ToJson(this DataTable dt)        {            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();            javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值            ArrayList arrayList = new ArrayList();            foreach (DataRow dataRow in dt.Rows)            {                Dictionary<string, object> dictionary = new Dictionary<string, object>();  //实例化一个参数集合                foreach (DataColumn dataColumn in dt.Columns)                {                    dictionary.Add(dataColumn.ColumnName, dataRow[dataColumn.ColumnName].ToStr());                }                arrayList.Add(dictionary); //ArrayList集合中添加键值            }            return javaScriptSerializer.Serialize(arrayList);  //返回一个json字符串        }        #endregion        #region Json 字符串 转换为 DataTable数据集合        /// <summary>        /// Json 字符串 转换为 DataTable数据集合        /// </summary>        /// <param name="json"></param>        /// <returns></returns>        public static DataTable ToDataTable(this string json)        {            DataTable dataTable = new DataTable();  //实例化            DataTable result;            try            {                JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();                javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值                ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);                if (arrayList.Count > 0)                {                    foreach (Dictionary<string, object> dictionary in arrayList)                    {                        if (dictionary.Keys.Count<string>() == 0)                        {                            result = dataTable;                            return result;                        }                        if (dataTable.Columns.Count == 0)                        {                            foreach (string current in dictionary.Keys)                            {                                dataTable.Columns.Add(current, dictionary[current].GetType());                            }                        }                        DataRow dataRow = dataTable.NewRow();                        foreach (string current in dictionary.Keys)                        {                            dataRow[current] = dictionary[current];                        }                        dataTable.Rows.Add(dataRow); //循环添加行到DataTable中                    }                }            }            catch            {            }            result = dataTable;            return result;        }        #endregion        #region 转换为string字符串类型        /// <summary>        ///  转换为string字符串类型        /// </summary>        /// <param name="s">获取需要转换的值</param>        /// <param name="format">需要格式化的位数</param>        /// <returns>返回一个新的字符串</returns>        public static string ToStr(this object s, string format = "")        {            string result = "";            try            {                if (format == "")                {                    result = s.ToString();                }                else                {                    result = string.Format("{0:" + format + "}", s);                }            }            catch            {            }            return result;        }        #endregion    }}


 

xml的获取使用

 List<DynamicXElement> roles = null;            bool collections = approves.DOAColumnBPM is IEnumerable<dynamic>;            if (collections)            {                roles = approves.DOAColumnBPM;            }            else            {                roles = new List<DynamicXElement>();                roles.Add(approves.DOAColumnBPM);            }            foreach (var de in roles)            {                dynamic d = de;                string roleName = d.DOARolesInColumnList.DOARolesInColumnBPM.RoleTypeDisplayName;                if (roleName.Equals(_wfContext.RoleName))                {                    List<DynamicXElement> users = null;                    bool hasMultiUser = d.DOARolesInColumnList.DOARolesInColumnBPM.SystemUserList.SystemUserBPM is IEnumerable<dynamic>;                    if (hasMultiUser)                    {                        users = d.DOARolesInColumnList.DOARolesInColumnBPM.SystemUserList.SystemUserBPM;                    }                    else                    {                        users = new List<DynamicXElement>();                        users.Add(d.DOARolesInColumnList.DOARolesInColumnBPM.SystemUserList.SystemUserBPM);                    }                    XElement parent = d.DOARolesInColumnList.DOARolesInColumnBPM.SystemUserList.XContent;                    parent.RemoveNodes();                    foreach (var ue in users)                    {                        dynamic u = ue;                        parent.Add(u.XContent);                        this.UserSelector.Items.Add(new ListItem((string)u.UserDisplayNameCN, HttpUtility.HtmlEncode(d.XContent.ToString())));                        parent.RemoveNodes();                    }                    break;                }            }


 

 

1 0
原创粉丝点击