我希望将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?
感谢。
答案 0 :(得分:5)
您可以使用JSON.NET自动将DataTables(以及许多其他类型!)序列化为JSON。
答案 1 :(得分:0)
在数据表上应用AsEnumerable
方法,然后对其应用一些LINQ以获得所需的格式。
var thatList=(from p in dt.AsEnumerable()
select new {
Jan= p.Field<string>("Jan"),
Feb = p.Field<string>("Feb"),
Mar = p.Field<string>("Mar"),
Apr = p.Field<string>("Apr")
}).ToList();
现在您可以使用thatList
转换为Json。
return Json(new { status = true, chartData = thatList },
JsonRequestBehavior.AllowGet);
答案 2 :(得分:0)
你为什么不尝试这样的事情:
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分钟内完成的助手课程
:)