博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

DataSet(DataTable)转化为json格式

Posted on 2010-12-20 09:44  itcfj  阅读(461)  评论(0编辑  收藏  举报

   public  class DataTableToJson
    {

 

        /// <summary>
        /// 把DataTable 转换为json格式数据,以方便JavaScript接受
        /// </summary>
        /// <param name="dt">datatable 对象</param>
        /// <returns>string</returns>
        public string GetJsonData(DataTable dt)
        {
            if (dt != null)
            {

 

                StringBuilder html = new StringBuilder();
                html .Append("[");
                for (int i = 0; i < dt .Rows .Count; i++)
                {
                    html .Append("{");
                    for (int j = 0; j < dt .Columns .Count; j++)
                    {


                        html .Append("\"" + dt .Columns[j] .ColumnName + "\"");
                        html .Append(":");
                        html .Append("\"" + string2Json(dt .Rows[i][j] .ToString()) + "\"");
                        html .Append(",");
                    }
                    html .Remove(html .Length - 1 , 1);
                    html .Append("},");
                }
                html .Remove(html .Length - 1 , 1);
                html .Append("]");

                return html .ToString();
            }
            else
            {
                return "";
            }
        }

        /// <summary>
        /// 把字符串转化为json对象
        /// </summary>
        /// <param name="s">字符串</param>
        /// <returns>string</returns>
        private string string2Json(string s)
        {
            StringBuilder sb = new StringBuilder(s .Length + 20);
            //字符串的char数组
            char[] charArray = s .ToCharArray();
            for (int i = 0; i < charArray .Length; i++)
            {
                char c = charArray[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();
        }

 

    }