Игнорирование поля во время сериализации .NET JSON; похож на [XmlIgnore]? - PullRequest
78 голосов
/ 11 сентября 2009

У меня есть класс POCO, который отправляется в браузер в виде строки JSON в .NET 3.5 sp1. Я просто использую сериализацию JSON по умолчанию, и у меня есть некоторые поля, которые я хочу игнорировать. Я хочу добавить к ним атрибут, аналогичный [System.Xml.Serialization.XmlIgnore], чтобы они не сериализовались.

Ответы [ 4 ]

118 голосов
/ 11 сентября 2009

Я использую атрибут ScriptIgnore в моей модели следующим образом:

public class Item
{
    [ScriptIgnore]
    public Item ParentItem { get; set; }
}

В этом конкретном сценарии я получал ошибку циклической ссылки от сериализатора Json, поэтому я просто проигнорировал ее. Я задавал подобный вопрос здесь на SO , когда меня включили в различие между Model и ViewModel.

26 голосов
/ 11 сентября 2009
[ScriptIgnore] 

это твоя черта.

2 голосов
/ 15 января 2016

Вам просто нужно добавить [ScriptIgnore(ApplyToOverrides = true)] в ваш текстовый шаблон (.tt).

Здесь часть моего текстового шаблона до

#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

Как только я вставил код, строка над codeStringGenerator автоматически сгенерировала мои классы и выглядела так:

[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }

Мне также нужно было изменить функцию UsingDirectives, чтобы вставить "using System.Web.Script.Serialization;"

1 голос
/ 23 февраля 2017

Установить свойство как внутреннее. Хотя зависит от вашей структуры. Принять к сведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...