Игнорирование поля во время сериализации .NET JSON; аналогично [XmlIgnore]?

У меня есть класс POCO, который отправляется в браузер как строка JSON в .NET 3.5 sp1. Я просто использую сериализацию JSON по умолчанию, и у меня есть некоторые поля, которые я хочу игнорировать. Я хочу поместить на них атрибут, похожий на [System.Xml.Serialization.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

Установить свойство как внутреннее. Тем не менее, зависит от вашей структуры. Примите во внимание.