将DataTable或Ilist<>转换成JSON格式

[code=BatchFile]
1将DataTable或Ilist<>转换成JSON格式 
using System; 
using System.Data; 
using System.Text; 
using System.Collections.Generic; 
using System.Reflection; 

/// <summary> 
/// 将DataTable或Ilist<>转换成JSON格式 
/// </summary> 
public class ToJson 
{ 
    public ToJson() 
    { 

    } 

//DataTable转成Json 
    public static string DataTableToJson(string jsonName, DataTable dt) 
    { 
        StringBuilder Json = new StringBuilder(); 
        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++) 
                { 
                    Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\""); 
                    if (j < dt.Columns.Count - 1) 
                    { 
                        Json.Append(","); 
                    } 
                } 
                Json.Append("}"); 
                if (i < dt.Rows.Count - 1) 
                { 
                    Json.Append(","); 
                } 
            } 
        } 
        Json.Append("]}"); 
        return Json.ToString(); 
    } 

//List转成json 
    public static string ObjectToJson<T>(string jsonName, IList<T> IL) 
    { 
        StringBuilder Json = new StringBuilder(); 
        Json.Append("{\"" + jsonName + "\":["); 
        if (IL.Count > 0) 
        { 
            for (int i = 0; i < IL.Count; i++) 
            { 
                T obj = Activator.CreateInstance<T>(); 
                Type type = obj.GetType(); 
                PropertyInfo[] pis = type.GetProperties(); 
                Json.Append("{"); 
                for (int j = 0; j < pis.Length; j++) 
                { 
                    Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\""); 
                    if (j < pis.Length - 1) 
                    { 
                        Json.Append(","); 
                    } 
                } 
                Json.Append("}"); 
                if (i < IL.Count - 1) 
                { 
                    Json.Append(","); 
                } 
            } 
        } 
        Json.Append("]}"); 
        return Json.ToString(); 
    } 
} 
2各种数据集转换为json/// <summary> 
        /// 对象转换为Json字符串 
        /// </summary> 
        /// <param name="jsonObject">对象</param> 
        /// <returns>Json字符串</returns> 
        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 + ","; 
            } 
            return Json.DeleteLast(jsonString) + "}"; 
        } 
        /// <summary> 
        /// 对象集合转换Json 
        /// </summary> 
        /// <param name="array">集合对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToJson(IEnumerable array) 
        { 
            string jsonString = "["; 
            foreach (object item in array) 
            { 
                jsonString += Json.ToJson(item) + ","; 
            } 
            return Json.DeleteLast(jsonString) + "]"; 
        } 
        /// <summary> 
        /// 普通集合转换Json 
        /// </summary> 
        /// <param name="array">集合对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToArrayString(IEnumerable array) 
        { 
            string jsonString = "["; 
            foreach (object item in array) 
            { 
                jsonString = ToJson(item.ToString()) + ","; 
            } 
            return Json.DeleteLast(jsonString) + "]"; 
        } 
        /// <summary> 
        /// 删除结尾字符 
        /// </summary> 
        /// <param name="str">需要删除的字符</param> 
        /// <returns>完成后的字符串</returns> 
        private static string DeleteLast(string str) 
        { 
            if (str.Length > 1) 
            { 
                return str.Substring(0, str.Length - 1); 
            } 
            return str; 
        } 
        /// <summary> 
        /// Datatable转换为Json 
        /// </summary> 
        /// <param name="table">Datatable对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToJson(DataTable table) 
        { 
            string jsonString = "["; 
            DataRowCollection drc = table.Rows; 
            for (int i = 0; i < drc.Count; i++) 
            { 
                jsonString += "{"; 
                foreach (DataColumn column in table.Columns) 
                { 
                    jsonString += "\"" + ToJson(column.ColumnName) + "\":"; 
                    if (column.DataType == typeof(DateTime) || column.DataType == typeof(string)) 
                    { 
                        jsonString += "\"" + ToJson(drc[i][column.ColumnName].ToString()) + "\","; 
                    } 
                    else 
                    { 
                        jsonString += ToJson(drc[i][column.ColumnName].ToString()) + ","; 
                    } 
                } 
                jsonString = DeleteLast(jsonString) + "},"; 
            } 
            return DeleteLast(jsonString) + "]"; 
        } 
        /// <summary> 
        /// DataReader转换为Json 
        /// </summary> 
        /// <param name="dataReader">DataReader对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToJson(DbDataReader dataReader) 
        { 
            string jsonString = "["; 
            while (dataReader.Read()) 
            { 
                jsonString += "{"; 

                for (int i = 0; i < dataReader.FieldCount; i++) 
                { 
                    jsonString += "\"" + ToJson(dataReader.GetName(i)) + "\":"; 
                    if (dataReader.GetFieldType(i) == typeof(DateTime) || dataReader.GetFieldType(i) == typeof(string)) 
                    { 
                        jsonString += "\"" + ToJson(dataReader[i].ToString()) + "\","; 
                    } 
                    else 
                    { 
                        jsonString += ToJson(dataReader[i].ToString()) + ","; 
                    } 
                } 
                jsonString = DeleteLast(jsonString) + "}"; 
            } 
            dataReader.Close(); 
            return DeleteLast(jsonString) + "]"; 
        } 
        /// <summary> 
        /// DataSet转换为Json 
        /// </summary> 
        /// <param name="dataSet">DataSet对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToJson(DataSet dataSet) 
        { 
            string jsonString = "{"; 
            foreach (DataTable table in dataSet.Tables) 
            { 
                jsonString += "\"" + ToJson(table.TableName) + "\":" + ToJson(table) + ","; 
            } 
            return jsonString = DeleteLast(jsonString) + "}"; 
        } 
        /// <summary> 
        /// String转换为Json 
        /// </summary> 
        /// <param name="value">String对象</param> 
        /// <returns>Json字符串</returns> 
        public static string ToJson(string value) 
        { 
            if (string.IsNullOrEmpty(value)) 
            { 
                return string.Empty; 
            } 

            string temstr; 
            temstr = value; 
            temstr = temstr.Replace("{", "{").Replace("}", "}").Replace(":", ":").Replace(",", ",").Replace("[", "【").Replace("]", "】").Replace(";", ";").Replace("\n", "<br/>").Replace("\r", ""); 

            temstr = temstr.Replace("\t", "   "); 
            temstr = temstr.Replace("'", "\'"); 
            temstr = temstr.Replace(@"\", @"\\"); 
            temstr = temstr.Replace("\"", "\"\""); 
            return temstr; 
        }
[/code]


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值