amcharts 的 DataTable 到 JSON 字符串
DataTable to JSON string for amcharts
我的模型中有一个方法可以查询我的 SQL 服务器数据库并将结果存储在数据表中。然后,我使用以下方法将该数据表转换为 JSON 字符串。
public void ConvertDataTabletoJSONString(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
JSONstring = serializer.Serialize(rows);
}
我的控制器是这样的:
public ActionResult getMonthlyData()
{
TDR_Monthly viewModel = new TDR_Monthly();
viewModel.getList(0);
return Json(viewModel.JSONstring, JsonRequestBehavior.AllowGet);
}
我的视图 javascript AmCharts.makechart dataLoader 有这个:
"dataLoader":
{
"url": "../TDR_MonthlyController/getMonthlyData",
"format": "json"
}
当我 "test" 该字符串的输出(通过在我的视图中显示字符串的内容,它在浏览器中正确显示,如下所示:
[{"REGION":"Atlanta", "STATE_NAME":"Alabama", "STATE":"AL", "CATEGORY_ID":"0 ", "CATEGORY":"No Group", "COUNT":100, "DEFICIENCY1":0, "DEFICIENCY2":0, "RESCIND1":0, "RESCIND2":0}]
但是,当我修改浏览器的 URL 以执行 JSON 调用(http://localhost:49777/Monthly/getMonthlyData)并打开 JSON 文件时,看起来它有一个额外间距和字符的废话:
"[{\"REGION\":\"Atlanta \",\"STATE_NAME\":\"Alabama \",\"STATE\":\"AL\",\"CATEGORY_ID\":\"0 \",\"CATEGORY\":\"No Group \",\"COUNT\":100,\"DEFICIENCY1\":0,\"DEFICIENCY2\":0,\"RESCIND1\":0,\"RESCIND2\":0}]
视图本身告诉我它无法解析它
Error parsing JSON file: ../TDR_MonthlyController/getMonthlyData
如有任何帮助,我们将不胜感激!!!
在 getMontlhyData
中,尝试更改
return Json(viewModel.JSONstring);
到
return Content(viewModel.JSONstring, "application/json");
因为您已经有了一个 JSON 字符串。 Json()
方法正在再次序列化它。
我的模型中有一个方法可以查询我的 SQL 服务器数据库并将结果存储在数据表中。然后,我使用以下方法将该数据表转换为 JSON 字符串。
public void ConvertDataTabletoJSONString(DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
JSONstring = serializer.Serialize(rows);
}
我的控制器是这样的:
public ActionResult getMonthlyData()
{
TDR_Monthly viewModel = new TDR_Monthly();
viewModel.getList(0);
return Json(viewModel.JSONstring, JsonRequestBehavior.AllowGet);
}
我的视图 javascript AmCharts.makechart dataLoader 有这个:
"dataLoader":
{
"url": "../TDR_MonthlyController/getMonthlyData",
"format": "json"
}
当我 "test" 该字符串的输出(通过在我的视图中显示字符串的内容,它在浏览器中正确显示,如下所示:
[{"REGION":"Atlanta", "STATE_NAME":"Alabama", "STATE":"AL", "CATEGORY_ID":"0 ", "CATEGORY":"No Group", "COUNT":100, "DEFICIENCY1":0, "DEFICIENCY2":0, "RESCIND1":0, "RESCIND2":0}]
但是,当我修改浏览器的 URL 以执行 JSON 调用(http://localhost:49777/Monthly/getMonthlyData)并打开 JSON 文件时,看起来它有一个额外间距和字符的废话:
"[{\"REGION\":\"Atlanta \",\"STATE_NAME\":\"Alabama \",\"STATE\":\"AL\",\"CATEGORY_ID\":\"0 \",\"CATEGORY\":\"No Group \",\"COUNT\":100,\"DEFICIENCY1\":0,\"DEFICIENCY2\":0,\"RESCIND1\":0,\"RESCIND2\":0}]
视图本身告诉我它无法解析它
Error parsing JSON file: ../TDR_MonthlyController/getMonthlyData
如有任何帮助,我们将不胜感激!!!
在 getMontlhyData
中,尝试更改
return Json(viewModel.JSONstring);
到
return Content(viewModel.JSONstring, "application/json");
因为您已经有了一个 JSON 字符串。 Json()
方法正在再次序列化它。