У меня есть класс POCO, который отправляется в браузер как строка JSON в .NET 3.5 sp1. Я просто использую сериализацию JSON по умолчанию, и у меня есть некоторые поля, которые я хочу игнорировать. Я хочу поместить на них атрибут, похожий на [System.Xml.Serialization.XmlIgnore], чтобы они не сериализовались.
Игнорирование поля во время сериализации .NET JSON; аналогично [XmlIgnore]?
Ответ 1
Я использую атрибут ScriptIgnore в моей модели следующим образом:
public class Item
{
[ScriptIgnore]
public Item ParentItem { get; set; }
}
В этом конкретном сценарии я получал круговую ошибку ссылки из сериализатора Json, поэтому я просто проигнорировал его. Я был задал аналогичный вопрос здесь на SO, когда меня включили в различие между Model и ViewModel.
Ответ 2
[ScriptIgnore]
- ваш huckaberry.
Ответ 3
Вам просто нужно добавить
[ScriptIgnore(ApplyToOverrides = true)]
в ваш текстовый шаблон (.tt).
Здесь часть моего текстового шаблона перед
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
Как только я вставил код, строка над codeStringGenerator
моими классами автоматически сгенерирована и выглядела так:
[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }
Мне также понадобилось изменить функцию UsingDirectives
, чтобы вставить "using System.Web.Script.Serialization;"
Ответ 4
Установить свойство как внутреннее. Тем не менее, зависит от вашей структуры. Примите во внимание.