Использование ScriptIgnoreAttribute в .net Standard 2.0, какая альтернатива?
Здравствуйте.
В веб приложении на платформе .net Framework 4.7.2. в Action контроллера для отдачи клиенту модели в формате JSON используется следующий код:
return Json(data, JsonRequestBehavior.AllowGet);
Для того чтобы при сериализации не возникало проблем с циклическими ссылками в .net Framework есть атрибут ScriptIgnoreAttribute, которым можно отметить свойства класса модели, чтобы они не сериализовались.
Но у меня с этим возникла проблема: моя модель определена в сборке .net Standard 2.0, и в ней я не нашел подобного атрибута.
Я попытался использовать вместо этого атрибут Newtonsoft.Json.JsonIgnoreAttribute, но он не учитывается стандартным сериализатором.
Я попытался изменить код контроллера на
но это потребовало изменения клиентского javascript (в этом случае контент представлял собой строку, которую требовалось парсить на слиенте в объект).
В общем подобный мой подход требовал большого объема работ, чего хотелось бы избежать.
Вопрос: можно ли использовать какой-то аттрибут, который есть в .net Standard и который является аналогом ScriptIgnore для стандартного сериализатора из .net Framework?
1. return Json(data, JsonRequestBehavior.AllowGet);
это обёртка над JavaScriptSerializer, которому можно задать кастом конверторы, и там игнорить поле.
2. return Content(Newtonsoft.Json.JsonConvert.SerializeObject(model));
должно также работать, если тип возвращаемого контента задать на json.
по F12 посмотреть, что приходит на клиент.
под рукой нет проекта классического ASP.NET Mvc.
вообще, всё что касается Json проще делать в Newtonsoft.Json.
там всё гибко и настраиваемо.
если второй вариант заработал, то нормально так с [JsonIgnore].