我正在尝试编写一个C#方法,用于序列化模型并返回JSON结果。这是我的代码:
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
var items = db.Words.Take(1).ToList();
JsonSerializerSettings jsSettings = new JsonSerializerSettings();
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
var converted = JsonConvert.SerializeObject(items, null, jsSettings);
return Json(converted, JsonRequestBehavior.AllowGet);
}
当我在Chrome中访问Words / Read时,我得到了以下JSON结果:
"[{\"WordId\":1,\"Rank\":1,\"PartOfSpeech\":\"article\",\"Image\":\"Upload/29/1/Capture1.PNG\",\"FrequencyNumber\":\"22038615\",\"Article\":null,\"ClarificationText\":null,\"WordName\":\"the | article\",\"MasterId\":0,\"SoundFileUrl\":\"/UploadSound/7fd752a6-97ef-4a99-b324-a160295b8ac4/1/sixty_vocab_click_button.mp3\",\"LangId\":1,\"CatId\":null,\"IsActive\":false}
我认为转义引号的问题出现在双重序列化对象时。来自其他问题: WCF JSON输出中添加了不必要的引号和反斜杠
看起来我确实对对象进行了双重序列化,因为我首先使用JSON.NET进行序列化,然后将结果传递给Json()函数。由于需要避免引用循环,我需要手动进行序列化,但我认为我的View需要一个ActionResult。
我该如何在这里返回一个ActionResult?我需要这样做吗,还是只需返回字符串即可?