Ich habe eine POCO-Klasse, die in .NET 3.5 SP1 an den Browser als JSON-String gesendet wird. Ich benutze nur die Standard-JSON-Serialisierung und ich habe einige Felder, die ich ignorieren möchte. Ich möchte ihnen ein Attribut ähnlich [System.Xml.Serialization.XmlIgnore] zuweisen, so dass sie nicht serialisiert werden.Ignorieren eines Felds während der .NET JSON-Serialisierung; ähnlich wie [XmlIgnore]?
Antwort
Ich benutze das ScriptIgnore Attribut auf meinem Modell wie folgt:
public class Item
{
[ScriptIgnore]
public Item ParentItem { get; set; }
}
In diesem speziellen Szenario I wurde einen kreisförmigen Referenzfehler von der Json Serializer bekommen, so dass ich es einfach ignoriert. Ich war asking a similar question here on SO, als ich an den Unterschied zwischen einem Model und ViewModel eingeschaltet wurde.
[ScriptIgnore]
ist Ihr huckaberry.
+1 für Tombstone-Referenz. – jrummell
Es ist eigentlich "Huckle Bearer", aber ich gebe dir +1 für die Mühe und den Film. :) –
Die ursprüngliche Antwort ist richtig, er sagt "Huckleberry", nicht "Huckle Bearer". http://www.imsdb.com/scripts/Tombstone.html – heisenberg
Sie müssen nur die [ScriptIgnore(ApplyToOverrides = true)]
in Ihre Textvorlage (.tt) Datei hinzufügen.
Hier ist ein Teil meiner Textvorlage vor
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
Sobald ich den Code der Zeile oberhalb der codeStringGenerator
meine Klassen automatisch generiert eingefügt und sah dies wie:
[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }
Ich musste auch ändern die UsingDirectives
Funktion "using System.Web.Script.Serialization;"
'ApplyToOverrides' scheint für eine virtuelle Eigenschaft sehr wichtig zu sein – Todd
Set Eigenschaft als interne einzufügen. Hängt jedoch von Ihrer Struktur ab. In Betracht ziehen.
- 1. Wie ignoriere ich ein [XMLIgnore] -Attribut
- 2. Ignorieren einer Eigenschaft während der XML-Serialisierung, aber nicht während der Deserialisierung
- 3. C# Attribut XmlIgnore und XamlWriter Klasse - XmlIgnore funktioniert nicht
- 4. Generischen Typ eines Felds mit der Auswahl
- 5. Auswählen nach Monat eines Felds
- 6. Ignorieren einer Eigenschaft während der Deserialisierung
- 7. Wie NET NET-Anwendung während der Installation ordnungsgemäß zu
- 8. Force Entity Framework alle Fremdschlüssel während der Klassengenerierung zu ignorieren
- 9. Ersetzen eines Felds in Microsoft Dynamics CRM
- 10. LINQ Select Distinct beim Ignorieren des XML-Felds
- 11. wie den Code ähnlich zu # region/# endregion in .NET organisieren?
- 12. Ignorieren von Dacpac-Snapshot-Optionen während der Veröffentlichung
- 13. .net XmlSerializer, ignorieren Eigenschaften Basisklasse
- 14. Wie Sie .NET-Konfigurationsdateien während der Installation ändern?
- 15. drupal ----- Hinzufügen eines Felds zum Inhaltstyp Geschichte
- 16. Öffnen eines About-Felds mit MVVM-Muster
- 17. Ausrichtung der ID eines verschachtelten Felds in einem Formular "Schienen"
- 18. Hinzufügen eines zusätzlichen Felds zur vorhandenen Spalte auf der Webseite
- 19. Anzeigen eines benutzerdefinierten Felds auf der OpenCart-Produktseite
- 20. .NET XML Deserialisierung ignorieren Namespaces
- 21. jQuery - Eingabefeld auf der Basis eines anderen Felds deaktivieren Wert
- 22. Hilfe bei der Benennung eines Felds (und einer Tabelle)
- 23. R Gleichheit während NAs ignorieren
- 24. Sortierreihenfolgebefeld basierend auf der alphabetischen Sortierung eines anderen Felds
- 25. Warum entfernt TextFieldParser.ReadField aufeinanderfolgende Zeilenumbrüche aus der Mitte eines Felds?
- 26. Ist .NET Execution Environment (DNX) mono ähnlich?
- 27. Benutzerdefinierter Kopierkonstruktor und Hinzufügen eines Felds
- 28. jQuery: Überprüfen, ob der Wert eines Felds null (leer) ist
- 29. AngularJS - Rückgabewert eines Felds der Zusage-ID in einer Fabrik
- 30. Aggregieren eines berechneten Felds in TClientDataset
Was, wenn es nicht POCO, sondern ein generiertes EntityModel ist, möchte ich den generierten Code nicht bearbeiten, gibt es eine Problemumgehung zum Hinzufügen von ScriptIgnore-Attribut zum generierten Entitätsmodell. – hazimdikenli
@hazimdikenli Sie müssen möglicherweise Teilklasse dafür verwenden. –
Vergessen Sie nicht, einen Verweis auf „System.Web.Extensions“ hinzufügen für diese – Levitikon