C#DataTable到Json?

我想将DataTable作为Json格式在图表上显示。

public JsonResult GetDataTable() { DataTable dt = new DataTable(); dt.Columns.Add("Jan"); dt.Columns.Add("Feb"); dt.Columns.Add("Mar"); dt.Columns.Add("Apr"); for (int i = 0; i < 10; i++) { dt.Rows.Add(i * 5, i * 10, i * 15, i * 11); } // JsonDataTable = dt to Json return new JsonResult { Data = new { success = true, chartData = JsonDataTable }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; } 

如何将DataTable转换为Json?

谢谢。

您可以使用JSON.NET自动将DataTables(以及许多其他类型!)序列化为JSON。

在数据表上应用AsEnumerable方法,然后在其上应用一些LINQ以获得所需的forms。

 var thatList=(from p in dt.AsEnumerable() select new { Jan= p.Field("Jan"), Feb = p.Field("Feb"), Mar = p.Field("Mar"), Apr = p.Field("Apr") }).ToList(); 

现在您可以使用thatList转换为Json。

 return Json(new { status = true, chartData = thatList }, JsonRequestBehavior.AllowGet); 

你为什么不尝试这样的事情:

 public static class JSONEncoderHelper { public static string FromXML(DataTable table) { StringBuilder sbuilder = new StringBuilder(); sbuilder.Append("{\""); sbuilder.Append(table.TableName); sbuilder.Append("\":["); bool first = true; foreach (DataRow drow in table.Rows) { if (first) { sbuilder.Append("{"); first = false; } else sbuilder.Append(",{"); bool firstColumn = true; foreach (DataColumn column in table.Columns) { if (firstColumn) { sbuilder.Append(string.Format("\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString())); firstColumn = false; } else sbuilder.Append(string.Format(",\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString())); } sbuilder.Append("}"); } sbuilder.Append("]}"); return sbuilder.ToString(); } } 

你现在所要​​做的就是重构我在2分钟内完成的辅助课程

🙂