public static string CreateJsonParameters(DataTable dt)
        {
            
/**//**/
            
/**//* /****************************************************************************
          * Without goingin to the depth of the functioning of this Method, i will try to give an overview
          * As soon as this method gets a DataTable it starts to convert it into JSON String,
          * it takes each row and in each row it grabs the cell name and its data.
          * This kind of JSON is very usefull when developer have to have Column name of the .
          * Values Can be Access on clien in this way. OBJ.HEAD[0].<ColumnName>
          * NOTE: One negative point. by this method user will not be able to call any cell by its index.
         * ************************************************************************
*/
            StringBuilder JsonString 
= new StringBuilder();
            
//Exception Handling        
            if (dt != null && dt.Rows.Count > 0)
            {
                JsonString.Append(
"");
                JsonString.Append(
"\"T_blog\":[ ");
                
for (int i = 0; i < dt.Rows.Count; i++)
                {
                    JsonString.Append(
"");
                    
for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        
if (j < dt.Columns.Count - 1)
                        {
                            JsonString.Append(
"\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
                        }
                        
else if (j == dt.Columns.Count - 1)
                        {
                            JsonString.Append(
"\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
                        }
                    }
                    
/**//**/
                    
/**//*end Of String*/
                    
if (i == dt.Rows.Count - 1)
                    {
                        JsonString.Append(
"");
                    }
                    
else
                    {
                        JsonString.Append(
"}, ");
                    }
                }
                JsonString.Append(
"]}");
                
return JsonString.ToString();
            }
            
else
            {
                
return null;
            }
        }

效果图如下:
{"T_blog":
  [
   {
"id":"14","title":"北京奥运开幕式","addtime":"2008-08-08"},
   {
"id":"15","title":"网络文化","addtime":"2008-09-12"},
   {
"id":"17","title":"北京下雨了","addtime":"2008-09-19"},
   {
"id":"21","title":"深圳地铁通了","addtime":"2008-09-25"}
  ]
}

 

===================================================

 

代码
    /// <summary>
    
/// 将一个数据表转换成一个JSON字符串,在客户端可以直接转换成二维数组。
    
/// </summary>
    
/// <param name="source">需要转换的表。</param>
    
/// <returns></returns>
    public static string DataTableToJson(DataTable source)
    {
        
if (source.Rows.Count == 0)
            
return "";
        StringBuilder sb 
= new StringBuilder("[");
        
foreach (DataRow row in source.Rows)
        {
            sb.Append(
"[");
            
for (int i = 0; i < source.Columns.Count; i++)
            {
                sb.Append(
'"' + row[i].ToString() + "\",");
            }
            sb.Remove(sb.Length 
- 11);
            sb.Append(
"],");
        }
        sb.Remove(sb.Length 
- 11);
        sb.Append(
"]");
        
return sb.ToString();
    }


    
/// <summary>
    
/// 反回JSON数据到前台
    
/// </summary>
    
/// <param name="dt">数据表</param>
    
/// <returns>JSON字符串</returns>
    public string CreateJsonParameters(DataTable dt)
    {
        StringBuilder JsonString 
= new StringBuilder();
        
//Exception Handling        
        if (dt != null && dt.Rows.Count > 0)
        {
            JsonString.Append(
"");
            JsonString.Append(
"\"TableInfo\":[ ");
            
for (int i = 0; i < dt.Rows.Count; i++)
            {
                JsonString.Append(
"");
                
for (int j = 0; j < dt.Columns.Count; j++)
                {
                    
if (j < dt.Columns.Count - 1)
                    {
                        JsonString.Append(
"\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\",");
                    }
                    
else if (j == dt.Columns.Count - 1)
                    {
                        JsonString.Append(
"\"" + dt.Columns[j].ColumnName.ToString() + "\":" + "\"" + dt.Rows[i][j].ToString() + "\"");
                    }
                }
                
/**/
                
/*end Of String*/
                
if (i == dt.Rows.Count - 1)
                {
                    JsonString.Append(
"");
                }
                
else
                {
                    JsonString.Append(
"}, ");
                }
            }
            JsonString.Append(
"]}");
            
return JsonString.ToString();
        }
        
else
        {
            
return null;
        }
    }

 

 

posted on 2009-07-21 00:20  钱途无梁  阅读(8859)  评论(1编辑  收藏  举报