虽然直接用Newtonsoft中的Json方法也能直接对数据进行序列化处理,不过工作中看到了手动拼接Json的方法,所以也记录一下。
原理很简单,就是通过两个for循环遍历DataTable中的列和行,然后用StringBuilder拼接成Json格式返回。
public static string DataTableToJson(DataTable table)
{
if (table.Rows.Count == 0) return "";
StringBuilder sbJson = new StringBuilder();
sbJson.Append("[");
for (int i = 0; i < table.Rows.Count; i++)
{
sbJson.Append("{");
for (int j = 0; j < table.Columns.Count; j++)
{
string colName = table.Columns[j].ColumnName.ToString();
string colData = table.Rows[i][j].ToString();
if (table.Columns[j].DataType.ToString() == "System.DateTime")
{
colData = Convert.ToDateTime(colData).ToString("yyyy-MM-dd HH:mm:ss");
}
sbJson.Append("\"" + colName + "\":\"" + colData + "\"");
if (j < table.Columns.Count - 1)
{
sbJson.Append(",");
}
}
sbJson.Append("}");
if (i < table.Rows.Count - 1)
{
sbJson.Append(",");
}
}
sbJson.Append("]");
return sbJson.ToString();
}