zoukankan      html  css  js  c++  java
  • .NET DataTable转换为JSON格式的字符串

    在进行数据传递的时候,有时我们需要通过Ajax的方式或者其他的方式传递一个数据列表,可以将DataTable或者其他形式的数据列表转换为JSON的格式,通过Ajax实体的形式进行传递。

    比如说:

    /// <summary>
            /// DataTable 转换为Json 
            /// </summary>
            /// <param name="dt">datatable</param>
            /// <returns></returns>
            public string DataTableToJson(DataTable dt)
            {
                //如果原数据为空,则直接返回空结构
                if (dt == null || dt.Rows.Count<=0) return "{}";
    
                string columnFirst = "";
                List<string> result = new List<string>();
                StringBuilder Json = new StringBuilder();
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (columnFirst != dt.Rows[i][0].ToString())
                        {
                            if (i != 0)
                            {
                                AddNewJson(Json, result, dt);
                            }
                            columnFirst = dt.Rows[i][0].ToString();
                            result = new List<string>();
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                result.Add(""" + dt.Rows[i][k].ToString() + """);
                            }
                        }
                        else
                        {
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                if (!result[k].Contains(dt.Rows[i][k].ToString()))
                                {
                                    result[k] += ","" + dt.Rows[i][k].ToString() + """;
                                }
                            }
                        }
                        if (i == dt.Rows.Count - 1)
                        {
                            AddNewJson(Json, result, dt);
                        }
                    }
                }
                return Json.ToString();
            }
    
            /// <summary>
            /// 添加新的Json 
            /// </summary>
            /// <param name="Json"></param>
            /// <param name="result"></param>
            /// <param name="dt"></param>
            private void AddNewJson(StringBuilder Json, List<string> result, DataTable dt)
            {
                Json.Append("{");
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    Json.Append(""");
                    Json.Append(dt.Columns[i].ColumnName);
                    Json.Append("":");
                    if (result[i].Contains(","))
                    {
                        Json.Append("[");
                        Json.Append(result[i]);
                        if (i == dt.Columns.Count - 1)
                        {
                            Json.Append("]");
                        }
                        else
                        {
                            Json.Append("],");
                        }
                    }
                    else
                    {
                        Json.Append(result[i]);
                        if (i != dt.Columns.Count - 1)
                        {
                            Json.Append(",");
                        }
                    }
                }
                Json.Append("}");
            }
  • 相关阅读:
    Windows命令行乱码问题解决
    Mysql中in语句排序
    MyBatis批量修改操作
    MyBatis联合查询association使用
    【转】Nginx 安装配置
    【转】解决编译安装NGINX时make报错
    【转】ora-00031:session marked for kill处理oracle中杀不掉的锁
    IOC-AOP
    【转】 linux之sed用法
    【转】Nginx+Tomcat+Memcached集群Session共享
  • 原文地址:https://www.cnblogs.com/Shang0109/p/3193766.html
Copyright © 2011-2022 走看看