Я пытаюсь написать метод С#, который будет сериализовать модель и вернуть результат 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);
}
Я получил следующий результат JSON, когда я перехожу к Words/Read в Chrome:
"[{\"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(). Мне нужно вручную сериализовать, чтобы избежать ссылок, но я думаю, что My View требует ActionResult.
Как я могу вернуть ActionResult здесь? Мне нужно, или я могу просто вернуть строку?