我正在尝试编写一个 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() 函数中。我需要手动序列化以避免引用循环,但我认为我的视图需要一个 ActionResult。
我怎样才能在这里返回一个ActionResult?我是否需要,或者我可以只返回一个字符串吗?