public static string DataTableToJson(DataTable dt)
{
StringBuilder JsonString = new StringBuilder(1024);
if (dt != null && dt.Columns.Count > 0)
{
JsonString.Append("{ ");
// Columns
JsonString.Append("\"Columns\":[ ");
for (int c = 0; c < dt.Columns.Count; c++)
{
JsonString.Append("{\"ColumnName\":\"" + dt.Columns[c].ColumnName + "\",\"DataType\":\"" + dt.Columns[c].DataType.ToString() + "\"}");
if (c < dt.Columns.Count - 1) JsonString.Append(",");
}
JsonString.Append("],");
// Rows
JsonString.Append("\"Rows\":[ ");
for (int r = 0; r < dt.Rows.Count; r++)
{
JsonString.Append("[");
for (int c = 0; c < dt.Columns.Count; c++)
{
object value = dt.Rows[r][c];
JsonString.Append(ToEscapedJavaScriptString(value.ToString()));
if (c < dt.Columns.Count - 1) JsonString.Append(",");
}
JsonString.Append("]");
if (r < dt.Rows.Count - 1) JsonString.Append(",");
}
JsonString.Append("]");
JsonString.Append("}");
return JsonString.ToString();
}
else
{
return "{}";
}
}