ASP.NET API-вопрос для новичков.Сериализация пользовательских объектов в ASP.NET WEB API
У меня есть глупый веб-проект api, где нет модели, только один контроллер с методом get.
Метод get извлекает данные из внешней базы данных с использованием API-интерфейсов проприетарной объектной модели.
public class MyObjectController : ApiController
{
private static IList<MyObject> list = new List<MyObject>();
private MyObjectCollection GetData()
{
return MyExternalDB.Query();
}
// GET api/myobjects
public IEnumerable<MyObject> Get()
{
MyObjectCollection objcoll = GetData();
IList<MyObject> list = objcoll.Cast<MyObject>().ToList();
return list;
}
}
Проблема: Теперь проект строится без ошибок, но когда я пытаюсь отлаживать с помощью IE URL-адрес API/myobjects и результатов загрузки в формате JSON, то IE не удается сказать «файл не может быть загружен».
Я подозреваю, что объект неправильно сериализуется в json. Использование пакета Web Api Трассировка Я вижу следующее исключение
Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property 'Project' with type ...
Вопросы
- MyObject не зависит от модели и на основе пользовательского типа, определенного в отдельном API. Должен ли я ожидать, что сериализатор будет работать нормально и преобразовать мой объект в json (если не будет проблема цикла sel-referencing)?
- Как я могу обработать MyObject, избавившись от свойств самореференции, чтобы он мог быть правильно сериализован для ответа json?
_ «Я подозреваю, что объект неправильно сериализуется в json» _ - или вы используете неправильный инструмент для тестирования API. Попробуйте [Fiddler] (http://www.telerik.com/fiddler) вместо IE. – CodeCaster