• C#转换成Json的方法集


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Text;
    using System.Data;
    using System.Reflection;
    using System.Collections;
    using System.Data.Common;
    
    namespace Common
    {
        //Json转化类
        public class ConvertToJson
        {
            #region 私有方法
            private static string StringToJson(string s)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < s.Length;i++ )
                {
                    char c=s.ToCharArray()[i];
                    switch(c)
                    {
                        case '"':
                            sb.Append("\"");
                            break;
                        case '\':
                            sb.Append("\\");
                            break;
                        case '/':
                            sb.Append("\/");
                            break;
                        case '':
                            sb.Append("\b");
                            break;
                        case 'f':
                            sb.Append("\f");
                            break;
                        case'
    ':
                            sb.Append("\n");
                            break;
                        case '
    ':
                            sb.Append("\r");
                            break;
                        case '	':
                            sb.Append("\t");
                            break;
                        default:
                            sb.Append(c);
                            break;
                    }
                }
                return sb.ToString();
            }
    
            /// <summary>
            /// 格式化字符型、日期型、布尔型
            /// </summary>
            /// <param name="str"></param>
            /// <param name="type"></param>
            /// <returns></returns>
            private static string StringFormat(string str,Type type)
            {
                if(type==typeof(string))
                {
                    str = StringToJson(str);
                    str = """ + str + """;
                }
                else if(type==typeof(DateTime))
                {
                    str = """ + str + """;
                }
                else if(type==typeof(bool))
                {
                    str = str.ToLower();
                }
                else if(type!=typeof(string)&&string.IsNullOrEmpty(str))
                {
                    str = """ + str + """;
                }
                return str;
            }
    
            #endregion
    
            #region  List转化成Json
            public static string ListToJson<T>(IList<T> list)
            {
                object obj = list[0];
                return ListToJson<T>(list, obj.GetType().Name);
            }
    
            private static string ListToJson<T>(IList<T> list, string JsonName)
            {
                StringBuilder Json = new StringBuilder();
                if (string.IsNullOrEmpty(JsonName)) JsonName = list[0].GetType().Name;
                Json.Append("{""+JsonName+"":[");
                if(list.Count>0)
                {
                    for (int i = 0; i < list.Count;i++ )
                    {
                        T obj = Activator.CreateInstance<T>();
                        PropertyInfo[] pi = obj.GetType().GetProperties();
                        Json.Append("{");
                        for (int j = 0; j < pi.Length;j++ )
                        {
                            Type type = pi[j].GetValue(list[i], null).GetType();
                            Json.Append("""+pi[j].Name.ToString()+"":"+StringFormat(pi[j].GetValue(list[i],null).ToString(),type));
    
                            if (j < pi.Length - 1)
                            {
                                Json.Append(",");
                            }
                        }
                        Json.Append("}");
                        if (i < pi.Length - 1)
                        {
                            Json.Append(",");
                        }
                    }
                }
                Json.Append("]}");
                return Json.ToString();
            }
    
            #endregion
    
            #region  对象转换为Json
            public static string ToJson(object jsonObject)
            {
                string jsonString = "{";
                PropertyInfo[] propertyInfo = jsonObject.GetType().GetProperties();
                for (int i = 0; i < propertyInfo.Length;i++ )
                {
                    object objectValue = propertyInfo[i].GetGetMethod().Invoke(jsonObject, null);
                    string value = string.Empty;
                    if(objectValue is DateTime||objectValue is Guid||objectValue is TimeSpan)
                    {
                        value = "'" + objectValue.ToString() + "'";
                    }
                    else if(objectValue is string)
                    {
                        value = "'" + ToJson(objectValue.ToString()) + "'";
                    }
                    else if(objectValue is IEnumerable)
                    {
                        value = ToJson((IEnumerable)objectValue);
                    }
                    else
                    {
                        value = ToJson(objectValue.ToString());
                    }
                    jsonString += """ + ToJson(propertyInfo[i].Name) + "":" + value + ",";
                }
                jsonString.Remove(jsonString.Length-1,jsonString.Length);
                return jsonString + "}";
            }
    
            #endregion
    
            #region  对象集合转换Json
            public static string ToJson(IEnumerable array)
            {
                string JsonString = "[";
                foreach(object item in array)
                {
                    JsonString += ToJson(item) + ",";
                }
                JsonString.Remove(JsonString.Length - 1, JsonString.Length);
                return JsonString + "]";
            }
            #endregion
    
            #region  普通集合转换为Json
            public static string ToArrayString(IEnumerable array)
            {
                string jsonString = "[";
                foreach(object item in array)
                {
                    jsonString = ToJson(item.ToString()) + ",";
                }
                jsonString.Remove(jsonString.Length-1,jsonString.Length);
                return jsonString + "]";
            }
    
            #endregion
    
            #region  DataSet转换Json
            public static string ToJson(DataSet dataSet)
            {
                string jsonString = "[";
                foreach(DataTable table in dataSet.Tables)
                {
                    jsonString += """+table.TableName+"":"+ToJson(table)+",";
    
                }
                jsonString = jsonString.TrimEnd(',');
                return jsonString + "]";
            }
    
            /// <summary>
            /// DataTable转换为Json
            /// </summary>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static string ToJson(DataTable dt)
            {
                StringBuilder jsonString = new StringBuilder();
                jsonString.Append("[");
                DataRowCollection drc = dt.Rows;
                for (int i = 0; i < drc.Count;i++ )
                {
                    jsonString.Append("{");
                    for (int j = 0; j < dt.Columns.Count;j++)
                    {
                        string strKey = dt.Columns[j].ColumnName;
                        string strValue = drc[i][j].ToString();
                        Type type = dt.Columns[j].DataType;
                        jsonString.Append("""+strKey+"":");
                        strValue = StringFormat(strValue,type);
                        if(j<dt.Columns.Count-1)
                        {
                            jsonString.Append(strValue+",");
                        }
                        else
                        {
                            jsonString.Append(strValue);
                        }
                    }
                    jsonString.Append("}");
                }
                jsonString.Remove(jsonString.Length-1,jsonString.Length);
                jsonString.Append("]");
                return jsonString.ToString();
            }
    
            /// <summary>
            /// DataTable转换为Json
            /// </summary>
            /// <param name="dt"></param>
            /// <param name="jsonName"></param>
            /// <returns></returns>
            public static string ToJson(DataTable dt,string jsonName)
            {
                StringBuilder Json = new StringBuilder();
                if (string.IsNullOrEmpty(jsonName)) jsonName = dt.TableName;
                Json.Append("{""+jsonName+"":[");
                if(dt.Rows.Count>0)
                {
                    for (int i = 0; i < dt.Rows.Count;i++ )
                    {
                        Json.Append("{");
                        for (int j = 0; j < dt.Columns.Count;j++ )
                        {
                            Type type = dt.Rows[i][j].GetType();
                            Json.Append("""+dt.Columns[j].ColumnName.ToString()+"":"+ StringFormat(dt.Rows[i][j].ToString(),type));
                            if(i<dt.Rows.Count-1)
                            {
                                Json.Append(",");
                            }
                        }
                        Json.Append("}");
                        if(i<dt.Rows.Count-1)
                        {
                            Json.Append(",");
                        }
                    }
                }
                Json.Append("]}");
                return Json.ToString();
                
            }
            #endregion
    
            #region  DataReader转换为Json
            public static string ToJson(DbDataReader dataReader)
            {
                StringBuilder jsonString = new StringBuilder();
                jsonString.Append("[");
                while(dataReader.Read())
                {
                    jsonString.Append("{");
                    for (int i = 0; i < dataReader.FieldCount;i++ )
                    {
                        Type type = dataReader.GetFieldType(i);
                        string strKey = dataReader.GetName(i);
                        string strValue = dataReader[i].ToString();
                        jsonString.Append("""+strKey+"":");
                        strValue = StringFormat(strValue,type);
                        if(i<dataReader.FieldCount-1)
                        {
                            jsonString.Append(strValue+",");
                        }
                        else
                        {
                            jsonString.Append(strValue);
                        }
                        
                    }
                    jsonString.Append("}");
                }
                dataReader.Close();
                jsonString.Remove(jsonString.Length-1,jsonString.Length);
                jsonString.Append("]");
                return jsonString.ToString();
            }
            #endregion
    
        }
    }
  • 相关阅读:
    sourcetree提交代码到远程仓库的方法
    使用sourcetree管理拉取代码的方法
    运用在伪类content上的html特殊字符
    H5在ios弹窗状态下调起输入法后关闭输入法页面元素错位解决办法
    Sticky footer经典布局--绝对底部布局
    Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
    如何在开发时用PC端对移动端页面进行调试
    SVN使用教程总结
    Keywords Search HDU2222 AC自动机模板题
    POJ
  • 原文地址:https://www.cnblogs.com/yinxuejunfeng/p/8719416.html
Copyright © 2020-2023  润新知