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;
        }
  • 相关阅读:
    HDU 2045 不容易系列之(3)—— LELE的RPG难题(递归/动态规划)
    UVALive 6885 spfa
    hdu 1142 A Walk Through the Forest spfa
    hdu 2795 Billboard 线段树
    hdu 1394 Minimum Inversion Number 线段树求逆序数
    hdu 1754 I Hate It 线段树-区间最值
    poj 1088 滑雪 动态规划
    poj 1163 The Triangle 动态规划
    hdu 1258 Sum It Up 搜索
    hdu 3006 The Number of set 状态压缩
  • 原文地址:https://www.cnblogs.com/walkerwang/p/1989778.html
Copyright © 2011-2022 走看看