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分钟内完成的辅助课程
🙂