DataTable转为JSON数据格式代码


http://www.cnblogs.com/fishtreeyu/archive/2011/03/11/1980469.html


方法一:

public  static  string  GetJSON(DataTable dt)
{
     StringBuilder sb = new  StringBuilder();
     sb.Append( "{\"totalCount\":"  + dt.Rows.Count + ",\"data\":" );
     sb.Append( "[" );
     try
     {
         if  (dt.Rows.Count > 0)
         {
             Hashtable ht = new  Hashtable();
             for  ( int  i = 0; i < dt.Columns.Count; i++)
             {
                 ht.Add(i, dt.Columns[i].ColumnName);
             }
             for  ( int  i = 0; i < dt.Rows.Count; i++)
             {
                 sb.Append( "{" );
                 for  ( int  j = 0; j < dt.Columns.Count; j++)
                 {
                     sb.Append( string .Format( "\"{0}\":\"{1}\"," ,
                     ht[j], dt.Rows[i][j].ToString()));
                 }
                 sb.Remove(sb.ToString().LastIndexOf( "," ), 1);
                 sb.Append( "}," );
             }
             sb.Remove(sb.ToString().LastIndexOf( "," ), 1);
             ht.Clear();
             ht = null ;
         }
    
     catch  (Exception ex)
     {
         throw  new  Exception(ex.Message);
     }
     finally
     {
          sb.Append( "]}" );
     }
     return  sb.ToString();
}


 

方法二:用Newtonsoft.Json.Net20.dll(点击下载)
先添加 Newtonsoft.Json.Net20.dll 的引用

using  System.Data;
using  System.IO;
using  Newtonsoft.Json;
 
/// <summary>将DateTable转为Json格式数据</summary>
/// <param name="dt">要转换的DataTable名称</param>
/// <param name="dtName">应该是转换后的Key如用Json.dtName得到数据</param>
/// <returns></returns>
public  static  string  DataTableToJSON(DataTable dt, string  dtName)
{
     StringBuilder sb = new  StringBuilder();
     StringWriter sw = new  StringWriter(sb);
 
     using  (JsonWriter jw = new  JsonTextWriter(sw))
     {
         JsonSerializer ser = new  JsonSerializer();
         jw.WriteStartObject();
         jw.WritePropertyName(dtName);
         jw.WriteStartArray();
         foreach  (DataRow dr in  dt.Rows)
         {
             jw.WriteStartObject();
 
             foreach  (DataColumn dc in  dt.Columns)
             {
                 jw.WritePropertyName(dc.ColumnName);
                 ser.Serialize(jw, dr[dc].ToString());
             }
 
             jw.WriteEndObject();
         }
         jw.WriteEndArray();
         jw.WriteEndObject();
 
         sw.Close();
         jw.Close();
 
     }
 
     return  sb.ToString();
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值