DataTable、DataSet、List、IEnumerable数据转Json

1. DataTable表数据转为List<Dictionary<string, object>>类型数据

public static List<Dictionary<string, object>> DataTableToDictionary(DataTable dt)
        {
            List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
            foreach (DataRow row in dt.Rows)
            {
                Dictionary<string, object> dictionary = new Dictionary<string, object>();
                foreach (DataColumn column in dt.Columns)
                {
                    dictionary.Add(column.ColumnName, row[column].ToString());
                }
                list.Add(dictionary);
            }
            return list;
        }

2.DataTable数据转为Json类型数据

public static string ToJson(DataTable dt)
        {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("[");
            DataRowCollection rows = dt.Rows;
            for (int i = 0; i < rows.Count; i++)
            {
                stringBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    string columnName = dt.Columns[j].ColumnName;
                    string str = rows[i][j].ToString();
                    Type dataType = dt.Columns[j].DataType;
                    stringBuilder.Append("\"" + columnName + "\":");
                    str = StringFormat(str, dataType);
                    if (j < dt.Columns.Count - 1)
                    {
                        stringBuilder.Append(str + ",");
                    }
                    else
                    {
                        stringBuilder.Append(str);
                    }
                }
                stringBuilder.Append("},");
            }
            stringBuilder.Remove(stringBuilder.Length - 1, 1);
            stringBuilder.Append("]");
            return stringBuilder.ToString();
        }
 public static string ToJson(DataTable dt, string jsonName)
        {
            StringBuilder stringBuilder = new StringBuilder();
            if (string.IsNullOrEmpty(jsonName))
            {
                jsonName = dt.TableName;
            }
            stringBuilder.Append("{\"" + jsonName + "\":[");
            if (dt.Rows.Count > 0)
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    stringBuilder.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        Type type = dt.Rows[i][j].GetType();
                        stringBuilder.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));
                        if (j < dt.Columns.Count - 1)
                        {
                            stringBuilder.Append(",");
                        }
                    }
                    stringBuilder.Append("}");
                    if (i < dt.Rows.Count - 1)
                    {
                        stringBuilder.Append(",");
                    }
                }
            }
            stringBuilder.Append("]}");
            return stringBuilder.ToString();
        }

 3. DataSet数据转为Json类型数据

  public static string ToJson(DataSet dataSet)
        {
            string text = "{";
            foreach (DataTable table in dataSet.Tables)
            {
                text = text + "\"" + table.TableName + "\":" + ToJson(table) + ",";
            }
            text = text.TrimEnd(',');
            return text + "}";
        }

 

4. List<>数据转为Json类型数据

public static string ListToJson<T>(IList<T> list)
        {
            object obj = list[0];
            return ListToJson(list, obj.GetType().Name);
        }

        public static string ListToJson<T>(IList<T> list, string jsonName)
        {
            StringBuilder stringBuilder = new StringBuilder();
            if (string.IsNullOrEmpty(jsonName))
            {
                jsonName = list[0].GetType().Name;
            }
            stringBuilder.Append("{\"" + jsonName + "\":[");
            if (list.Count > 0)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    PropertyInfo[] properties = Activator.CreateInstance<T>().GetType().GetProperties();
                    stringBuilder.Append("{");
                    for (int j = 0; j < properties.Length; j++)
                    {
                        Type type = properties[j].GetValue(list[i], null).GetType();
                        stringBuilder.Append("\"" + properties[j].Name.ToString() + "\":" + StringFormat(properties[j].GetValue(list[i], null).ToString(), type));
                        if (j < properties.Length - 1)
                        {
                            stringBuilder.Append(",");
                        }
                    }
                    stringBuilder.Append("}");
                    if (i < list.Count - 1)
                    {
                        stringBuilder.Append(",");
                    }
                }
            }
            stringBuilder.Append("]}");
            return stringBuilder.ToString();
        }

5. IEnumerable数据转为Json类型数据

 public static string ToJson(IEnumerable array)
        {
            string text = "[";
            foreach (object item in array)
            {
                text = text + ToJson(item) + ",";
            }
            text.Remove(text.Length - 1, text.Length);
            return text + "]";
        }

public static string ToArrayString(IEnumerable array)
        {
            string text = "[";
            foreach (object item in array)
            {
                text = ToJson(item.ToString()) + ",";
            }
            text.Remove(text.Length - 1, text.Length);
            return text + "]";
        }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值