它看起來像你的JSON越來越雙系列化。你雖然沒有顯示完整的控制器代碼,我猜,你正在做這樣的事情:
public ActionResult GetDataTable()
{
// (... code to build data table omitted for brevity ...)
// Serialize data table using Json.Net to avoid circular reference error
string output = JsonConvert.SerializeObject(dt,
new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
Formatting = Formatting.Indented
});
return Json(output);
}
的Json()
方法還調用序列化。通常,在MVC控制器中,您只需使用Json()
方法來序列化返回對象,而不是單獨使用Json.Net。我可以看到你在這裏使用Json.Net來嘗試解決當你嘗試序列化數據表時由於循環引用而發生的異常。如果您要手動序列化,那麼您需要以不會再次序列化的方式返回數據。您可以使用Content()
方法代替。試着這樣說:
public ActionResult GetDataTable()
{
// Build data table
DataTable dt = new DataTable();
dt.Columns.Add("DAYDATE", typeof(DateTime));
dt.Columns.Add("SERIES1", typeof(double));
dt.Rows.Add(new DateTime(2012, 5, 22, 0, 15, 0), 3.65);
// Serialize data table using Json.Net to avoid circular reference error
string output = JsonConvert.SerializeObject(dt,
new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
Formatting = Formatting.Indented
});
// Output is already serialized; return it as is (with the appropriate media type)
return Content(output, "application/json");
}
在我的測試中,上面會產生下面的輸出,我認爲這是你在找什麼:
[ { "DAYDATE": "2012-05-22T00:15:00", "SERIES1": 3.65 } ]
忘了補充ExtJS的電網拋出錯誤200 –