c# Ignorer un champ pendant la sérialisation JSON.NET; similaire à[XmlIgnore]?




asp.net-mvc serialization (4)

Vous avez juste besoin d'ajouter le [ScriptIgnore(ApplyToOverrides = true)] dans votre fichier de modèle de texte (.tt).

Voici une partie de mon modèle de texte avant

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

Une fois que j'ai inséré le code la ligne au-dessus du codeStringGenerator mes classes générées automatiquement et ressemblait à ceci:

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

J'ai également dû modifier la fonction UsingDirectives pour insérer "using System.Web.Script.Serialization;"

J'ai une classe POCO qui est envoyée au navigateur en tant que chaîne JSON dans .NET 3.5 SP1. J'utilise simplement la sérialisation JSON par défaut et j'ai des champs que je veux ignorer. Je veux mettre un attribut similaire à [System.Xml.Serialization.XmlIgnore] sur eux afin qu'ils ne soient pas sérialisés.


Answer #1
[ScriptIgnore] 

est votre Huckaberry.


Answer #2

Définir la propriété comme interne. Cela dépend de votre structure. Prendre en considération.


Answer #3

J'utilise l'attribut ScriptIgnore sur mon modèle comme ceci:

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

Dans ce scénario particulier, j'obtenais une erreur de référence circulaire du sérialiseur Json, donc je l'ai simplement ignoré. Je posais une question similaire ici sur SO quand j'ai été mis à la différence entre un modèle et ViewModel.





serialization