您的位置:首页 > Web前端 > JavaScript

DataTable转为JSON数据格式代码

2011-03-11 09:27 585 查看
方法一:

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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: