zoukankan      html  css  js  c++  java
  • json 转换

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Runtime.Serialization;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.Text;
    using System.Xml;
    using System.Web;
    using System.Web.Script.Serialization;
    using System.Runtime.Serialization.Json;
    using System.Xml.Serialization;
    using System.Text.RegularExpressions;
    
    namespace Maticsoft.COM
    {
        /// <summary>
        /// 数据转换类
        /// </summary>
        public static class Transform
        {
    
            /// <summary>
            /// json序列化(非二进制方式)
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="t"></param>
            /// <returns></returns>
            public static string JsonSerializer<T>(T t)
            {
                JavaScriptSerializer jsonSerialize = new JavaScriptSerializer();
                return jsonSerialize.Serialize(t);
            }
            /// <summary>
            /// 把对象转换成Json格式的字符串
            /// </summary>
            /// <param name="o">对象</param>
            /// <returns>返回Json格式的字符串</returns>
            public static string ToJsonString(Object o)
            {
                JavaScriptSerializer script = new JavaScriptSerializer();
                string str = script.Serialize(o);
                //处理日期格式转换的问题
                str = Regex.Replace(str, @"\/Date((d+))\/", match =>
                {
                    DateTime dt = new DateTime(1970, 1, 1);
                    dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
                    dt = dt.ToLocalTime();
                    return dt.ToString("yyyy-MM-dd HH:mm:ss");
                });
                return str;
            }
    
            /// <summary>
            /// 把DataSet转换成Json格式的字符串
            /// </summary>
            /// <param name="dataset">DataSet数据集</param>
            /// <returns>返回Json格式的字符串</returns>
            public static string ToJsonString(DataSet dataset)
            {
                List<List<Dictionary<string, string>>> m_list = new List<List<Dictionary<string, string>>>();
                foreach (DataTable dt in dataset.Tables)
                {
    
                    List<Dictionary<string, string>> m_table = new List<Dictionary<string, string>>();
                    foreach (DataRow dr in dt.Rows)
                    {
                        Dictionary<string, string> m_row = new Dictionary<string, string>();
                        foreach (DataColumn dc in dt.Columns)
                        {
                            m_row.Add(dc.ColumnName, dr[dc].ToString());
                        }
                        m_table.Add(m_row);
                    }
                    m_list.Add(m_table);
                }
                return ToJsonString(m_list);
            }
    
            /// <summary>
            /// 把XmlDocument对象转换成Json格式的字符串
            /// </summary>
            /// <param name="doc">XmlDocument对象</param>
            /// <returns>返回Json格式的字符串</returns>
            public static string ToJsonString(XmlDocument doc)
            {
                XmlNodeList oNodes = doc.DocumentElement.ChildNodes;
                List<Dictionary<string, string>> m_List = new List<Dictionary<string, string>>();
                foreach (XmlNode oNode in oNodes)
                {
                    Dictionary<string, string> dir = new Dictionary<string, string>();
                    foreach (XmlAttribute Attr in oNode.Attributes)
                    {
                        dir.Add(Attr.Name, Attr.Value);
                    }
                    m_List.Add(dir);
                }
                return ToJsonString(m_List);
            }
    
            /// <summary>
            /// 把DataTable对象转换成Json格式的字符串
            /// </summary>
            /// <param name="datatable">DataTable对象</param>
            /// <returns>返回Json格式的字符串</returns>
            public static string ToJsonString(DataTable datatable)
            {
                List<Dictionary<string, string>> m_table = new List<Dictionary<string, string>>();
                foreach (DataRow dr in datatable.Rows)
                {
                    Dictionary<string, string> m_row = new Dictionary<string, string>();
                    foreach (DataColumn dc in datatable.Columns)
                    {
                        m_row.Add(dc.ColumnName, dr[dc].ToString());
                    }
                    m_table.Add(m_row);
                }
                return ToJsonString(m_table);
            }
    
            /// <summary>
            /// Json格式的字符串转换成指定类型的对象
            /// </summary>
            /// <param name="JsonString">son格式的字符串</param>
            /// <param name="t">转换的类型</param>
            /// <returns>转换后的对象</returns>
            public static object parseJSON(string JsonString, Type t)
            {
                object o = null;
                MemoryStream stream1 = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(JsonString));
                DataContractJsonSerializer dataSer = new DataContractJsonSerializer(t);
                try
                {
                    o = dataSer.ReadObject(stream1);
                }
                catch (Exception eorr)
                {
                    throw eorr;
                }
                finally
                {
                    stream1.Close();
                    stream1.Dispose();
                }
    
                return o;
            }
    
            /// <summary>
            /// Json格式的字符串转换成指定类型的对象
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="JsonString"></param>
            /// <returns></returns>
            public static T JSONToObject<T>(string JsonString)
            {
                JavaScriptSerializer jss = new JavaScriptSerializer();
                try
                {
                    return jss.Deserialize<T>(JsonString);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
            /// <summary>
            /// 转换成xml字符串
            /// </summary>
            /// <param name="type">对象类型</param>
            /// <param name="o">转换的对象</param>
            /// <returns></returns>
            public static string ObjectToXmlString(Type type, object o)
            {
                return ObjectToXmlDocument(type, o).OuterXml;
            }
    
            /// <summary>
            /// 转换成xml对象
            /// </summary>
            /// <param name="type">对象类型</param>
            /// <param name="o">转换的对象</param>
            /// <returns></returns>
            public static XmlDocument ObjectToXmlDocument(Type type, object o)
            {
                XmlSerializer mySerializer = new XmlSerializer(type);
                Stream oStream = new MemoryStream();
                StreamWriter stream = new StreamWriter(oStream);
                mySerializer.Serialize(stream, o);
                oStream.Position = 0;
                TextReader textReader = new StreamReader(oStream);
                XmlDocument doc = new XmlDocument();
                doc.Load(textReader);
                stream.Close();
                return doc;
            }
    
            /// <summary>
            /// 转换字符串为GUID
            /// </summary>
            /// <param name="sVal">字符串</param>
            /// <returns>GUID对象</returns>
            public static object GetDBGUIDVal(string sVal)
            {
                object ob = null;
                if (string.IsNullOrEmpty(sVal))
                {
                    ob = DBNull.Value;
                }
                else
                {
                    Guid g = new Guid(sVal);
                    return g;
                }
                return ob;
            }
    
            /// <summary>
            /// 转换GUID为object
            /// </summary>
            /// <param name="gVal">GUID</param>
            /// <returns>GUID对象</returns>
            public static object GetDBGUIDVal(Guid gVal)
            {
                object ob = null;
                if (gVal == Guid.Empty || gVal == null)
                {
                    ob = DBNull.Value;
                }
                else
                {
                    return gVal;
                }
                return ob;
            }
    
            /// <summary>
            /// 转换DateTime为数据字段类型
            /// </summary>
            /// <returns></returns>
            public static object GetDBDateTime(DateTime dt)
            {
                object ob = null;
                if (dt == null)
                    ob = DBNull.Value;
                else
                    return dt;
                return ob;
            }
    
            /// <summary>
            /// 获取object的布尔值
            /// </summary>
            /// <param name="ov"></param>
            /// <returns></returns>
            public static bool GetBoolValue(object ov)
            {
                if (ov == null)
                    return false;
                if (ov.ToString().Equals("1"))
                    return true;
                if (ov.ToString().Equals("true"))
                    return true;
                if (ov.ToString().Equals("True"))
                    return true;
                return false;
            }
    
            /// <summary>
            /// 获取string的布尔值
            /// </summary>
            /// <param name="ov"></param>
            /// <returns></returns>
            public static bool GetBoolValue(string sv)
            {
                if (sv.Equals("1"))
                    return true;
                if (sv.ToLower().Equals("true"))
                    return true;
                return false;
            }
            /// <summary>
            /// 将对象属性转换为key-value对
            /// </summary>   
            /// <param name="o"></param>   
            /// <returns></returns>   
            public static Dictionary<String, Object> ToPropDictionary(Object o)
            {
                Dictionary<String, Object> map = new Dictionary<string, object>();
                Type t = o.GetType();
                PropertyInfo[] pi = t.GetProperties(BindingFlags.Public | BindingFlags.Instance);
                foreach (PropertyInfo p in pi)
                {
                    MethodInfo mi = p.GetGetMethod();
    
                    if (mi != null && mi.IsPublic)
                    {
                        try
                        {
                            map.Add(p.Name, mi.Invoke(o, new Object[] { }));
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }
    
                return map;
            }
    
            /// <summary>
            /// 把DataTable对象转换成TreeGrid支持的Json格式字符串
            /// </summary>
            /// <param name="datatable">DataTable对象</param>
            /// <param name="CurrField">主键</param>
            /// <param name="ParentField">父级主键</param>
            /// <returns>返回Json格式的字符串</returns>
            public static string ToJsonStringForTreeList(DataTable datatable, string CurrField, string ParentField, string IdValue)
            {
                List<Dictionary<string, string>> m_table = new List<Dictionary<string, string>>();
                //DataRow[] aryDr = datatable.Select(string.Format(ParentField+" is null");
                DataRow[] aryDr = datatable.Select(string.Format("ID='{0}'", IdValue));
                foreach (DataRow dr in aryDr)
                {
                    string ParACode = string.Empty;
                    Dictionary<string, string> m_row = new Dictionary<string, string>();
                    foreach (DataColumn dc in datatable.Columns)
                    {
                        m_row.Add(dc.ColumnName, dr[dc].ToString());
                    }
    
                    //判断是否有子级节点
                    ParACode = dr[CurrField].ToString();
                    if (!string.IsNullOrEmpty(ParACode))
                    {
                        getSubDic(datatable, ParentField, ParACode, ref m_row, CurrField);
                    }
                    m_table.Add(m_row);
                }
                return ToJsonString(m_table);
            }
            private static void getSubDic(DataTable datatable,
                string ParentField,
                string ParentCode,
                ref Dictionary<string, string> parentDic,
                string CurrField)
            {
                DataRow[] arySubDr = datatable.Select(string.Format("{1}='{0}'", ParentCode, ParentField));
                if (arySubDr.Length != 0)
                {
                    List<string> subDic = new List<string>();
                    foreach (DataRow dr in arySubDr)
                    {
                        Dictionary<string, string> subRowDic = new Dictionary<string, string>();
                        foreach (DataColumn dc in datatable.Columns)
                        {
                            subRowDic.Add(dc.ColumnName, dr[dc].ToString());
                        }
                        //判断是否有子级节点
                        if (!string.IsNullOrEmpty(dr[CurrField].ToString()))
                        {
                            getSubDic(datatable, ParentField, dr[CurrField].ToString(), ref subRowDic, CurrField);
                        }
                        subDic.Add(ToJsonString(subRowDic));
                    }
                    parentDic.Add("state", "closed");
                    parentDic.Add("children", ToJsonString(subDic));
                }
            }
            /// <summary>
            /// 将一个object对象序列化,返回一个byte[]
            /// </summary>
            /// <param name="obj">能序列化的对象</param>
            /// <returns></returns>
            public static byte[] ObjectToBytes(object obj)
            {
                using (MemoryStream ms = new MemoryStream())
                {
                    IFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(ms, obj);
                    return ms.GetBuffer();
                }
            }
            #region 字符加密为MD5 Methods - Encode
    
    
            #endregion
    
            /// <summary>
            /// 过滤不安全的字符串
            /// </summary>
            /// <param name="Str"></param>
            /// <returns></returns>
            public static string FilteSQLStr(string Str)
            {
    
                Str = Str.Replace("delete", "");
                Str = Str.Replace("update", "");
                Str = Str.Replace("insert", "");
                Str = Str.Replace("drop", "");
                Str = Str.Replace("DELETE", "");
                Str = Str.Replace("UPDATE", "");
                Str = Str.Replace("INSERT", "");
                Str = Str.Replace("DROP", "");
                return Str;
            }
        }
    }
  • 相关阅读:
    在Matlab2018b中配置MinGW-w64 C/C++ 编译器
    电脑忽然黑屏
    Linux中drwxr-xr-x.的意思和权限
    tensorflow 和cuda对应关系
    apt-get update 升级错误
    修改模型参数名
    tensor转化为ndarray
    Ubuntu GitLab仓库服务器搭建
    友元
    常函数 常对象
  • 原文地址:https://www.cnblogs.com/xiongyang123/p/7171219.html
Copyright © 2011-2022 走看看