zoukankan      html  css  js  c++  java
  • DataTable To Json

    标题不正确,只是把datatable转成json格式的字符串,其实自己循环拼接一下也就行了,但既然有DataTable这种东西,那么不如把它扩展一下,直接输出不是更快?

    于是我把它写成了扩展方法,没有这个需求的话,把this去掉,可以当成普通方法来用

    第二个方法我重载了一个可以选择字段的方法,这样可以减少不必要的传输量

        //DataTable转成Json 
        public static string ToJson(this DataTable dt, string jsonName)
        {
            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();
        }
        /// <summary>选取自定义的列生成json字符串</summary>
        /// <param name="tableSource">数据库查询结果</param>
        /// <param name="fields">需要添加进来的字段名</param>
        /// <returns></returns>
        public static string ToJson(this DataTable tableSource, string jsonName, params string[] fields)
        {
            if (fields.Count() < 1) throw new Exception("fields count must be 1 or more");//至少要转化一列
            string jsonData = "{'" + jsonName + "':[";
    
            if (tableSource.Rows.Count > 0)
            {
                foreach (DataRow row in tableSource.Rows)
                {
                    jsonData += "{";
                    for (int i = 0; i < fields.Length; i++)
                        jsonData += "'" + fields[i] + "':'" + row[fields[i]] + "',";
                    jsonData = jsonData.Substring(0, jsonData.Length - 1);
                    jsonData += "},";
                }
                jsonData = jsonData.Substring(0, jsonData.Length - 1);
                jsonData += "]}";
            }
            else
            {
                jsonData += "]}";
            }
    
            return jsonData;
        }
  • 相关阅读:
    vue 跳转路由传参数用法
    百度地图放大之后,多边形,矩形覆盖物消失
    百度地图画多边形,画圆, 监听事件不触发原因
    兄弟组件之间如何通信
    vue如何触发某个元素的单击事件?
    input 清空值。(转载)
    inline-block元素水平居中问题
    android 浏览器对图片加载高度渲染问题
    IE下png图片黑边问题
    IE css hack整理
  • 原文地址:https://www.cnblogs.com/walkerwang/p/1989778.html
Copyright © 2011-2022 走看看