【发布时间】:2014-06-14 10:09:04
【问题描述】:
我正在尝试编写一个将序列化模型并返回 JSON 结果的 C# 方法。这是我的代码:
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 output is getting unwanted quotes & backslashes added
看起来我对我的对象进行了双重序列化,因为我首先使用 JSON.NET 进行序列化,然后将结果传递给 Json() 函数。我需要手动序列化以避免引用循环,但我认为我的视图需要一个 ActionResult。
如何在此处返回 ActionResult?我需要,还是可以只返回一个字符串?
【问题讨论】:
-
在 javascript 返回时我只做 JSON.parse(message);.
-
你的意思是使用 Javascript 来解析 /"s?我正在使用 Razor HTML 帮助程序来处理特定的包,所以我不知道如何让它工作..跨度>
标签: c# serialization json.net asp.net-mvc-5