【发布时间】:2017-05-24 22:52:54
【问题描述】:
我的模型中有一个方法可以查询我的 SQL Server 数据库并将结果存储在数据表中。然后,我使用以下方法将该数据表转换为 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"
}
当我“测试”该字符串的输出时(通过在我的视图中显示字符串的内容,它会在浏览器中正确显示,如下所示:
[{"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
任何帮助将不胜感激!!!
【问题讨论】:
-
这些列是
char还是varchar? -
您是否对字符串进行双重序列化?也许this question 的答案可能会有所帮助。
-
@Anderson Pimentel 我的专栏由 varchars 和 ints 组成。
-
xorspark 似乎这可能是问题所在,但现在我不知道如何将我的数据表转换为正确的 JSON 格式进行解析。
-
尝试
return Content(viewModel.JSONstring...而不是return Json(viewModel.JSONstring...,因为您已经有一个 JSON 字符串。
标签: json asp.net-mvc-4 amcharts