/// <summary>
    /// DataTable转成Json
    /// </summary>
    /// <param name="jsonName"></param>
    /// <param name="dt"></param>
    /// <returns></returns>
    public static string ToJson(DataTable dt, string jsonName)
    {
        StringBuilder Json = new StringBuilder();
        if (string.IsNullOrEmpty(jsonName))
            jsonName = dt.TableName;
        Json.Append("{\"" + jsonName + "\":[");
        )
        {
            ; i < dt.Rows.Count; i++)
            {
                Json.Append("{");
                ; j < dt.Columns.Count; j++)
                {
                    Type type = dt.Rows[i][j].GetType();
                    Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":" + StringFormat(dt.Rows[i][j].ToString(), type));
                    )
                    {
                        Json.Append(",");
                    }
                }
                Json.Append("}");
                )
                {
                    Json.Append(",");
                }
            }
        }
        Json.Append("]}");
        return Json.ToString();
    }
 #region 私有方法
        /// <summary>
        /// 过滤特殊字符
        /// </summary>
        /// <param name="s">字符串</param>
        /// <returns>json字符串</returns>
        private static string String2Json(String s)
        {
            StringBuilder sb = new StringBuilder();
            ; i < s.Length; i++)
            {
                char c = s.ToCharArray()[i];
                switch (c)
                {
                    case '\"':
                        sb.Append("\\\""); break;
                    case '\\':
                        sb.Append("\\\\"); break;
                    case '/':
                        sb.Append("\\/"); break;
                    case '\b':
                        sb.Append("\\b"); break;
                    case '\f':
                        sb.Append("\\f"); break;
                    case '\n':
                        sb.Append("\\n"); break;
                    case '\r':
                        sb.Append("\\r"); break;
                    case '\t':
                        sb.Append("\\t"); break;
                    default:
                        sb.Append(c); break;
                }
            }
            return sb.ToString();
        }
        /// <summary>
        /// 格式化字符型、日期型、布尔型
        /// </summary>
        /// <param name="str"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private static string StringFormat(string str, Type type)
        {
            if (type == typeof(string))
            {
                str = String2Json(str);
                str = "\"" + str + "\"";
            }
            else if (type == typeof(DateTime))
            {
                str = "\"" + str + "\"";
            }
            else if (type == typeof(bool))
            {
                str = str.ToLower();
            }
            else if (type != typeof(string) && string.IsNullOrEmpty(str))
            {
                str = "\"" + str + "\"";
            }
            return str;
        }

        #endregion

最新文章

  1. js的浅拷贝和深拷贝
  2. 解决 scroll() position:fixed 抖动、导航菜单固定头部(底部)跟随屏幕滚动
  3. POJ 2923 Relocation (状态压缩,01背包)
  4. iOS CocoaPods安装和使用图解
  5. D2GS1.11 的DC Key的相關設置指南
  6. Android开发之Bitmap二次采样
  7. select random item with weight 根据权重随机选出
  8. jquery easy ui 学习 (2) customtools window
  9. (三)Android中Intent概念及应用
  10. [问题解决] ubuntu server12.04 认证的问题
  11. 使用HAXM加速Android虚拟机
  12. Android项目实战(二十九):酒店预定日期选择
  13. CSDN 支持Markdown写文章了!
  14. SDN网络中hypervisor带来的控制器时延(Hypervisor位置的优化)
  15. JS获取当月第一天和最后一天
  16. Spring定义事物通知tx:advice
  17. Intellij-插件安装-JRebel热部署插件安装
  18. RockChip RK3326 系统编译问题总结
  19. AspectJ框架基于注解的AOP实现
  20. html 中一些不常见的标签

热门文章

  1. 规范和封装jdbc程序代码
  2. javaScript中的空值和假值
  3. 视频直播点播nginx-rtmp开发手册中文版
  4. px与rem关系及转换
  5. [转载] Win PE内安装Windows 7原版镜像 / 安装程序无法创建新的系统分区,也无法定位现有的系统分区
  6. phpv6_css
  7. MVC入门第一天
  8. 使用配置文件来配置JDBC连接数据库
  9. python学习道路(day5note)(列表生成式,生成器,装饰器,常用模块)
  10. erlang调试之JCL