Ich habe eine Liste von Strings in meiner web.config, die die Namen der von Entity Framework generierten Modellmitglieder beschreibt, die in meiner Web-API serialisiert werden dürfen .
Wie ich z.B. das Attribut [IgnoreDataMember]
zur Laufzeit setzen?
Die Idee ist, dass nicht alle Daten offen gelegt werden sollten und die Konfiguration, die verfügbar sein sollte, sollte ohne Neukompilierung konfigurierbar sein.
Bis jetzt setze ich nur alle Werte der Mitglieder, die nicht in dieser Liste enthalten sind, auf null
. Diese Lösung ist jedoch nicht optimal, weil z.B. Mitglieder des Typs datetime
werden zu "0001-01-01T00:00:00"
serialisiert und zusätzlich enthält die Antwort eine Menge unnötiger Informationen (die Antworten können bis zu 150 MB groß werden). Es wäre also angenehmer, die Mitglieder einfach aus dem Serialisierungsprozess zu entfernen.So können Sie Datenelemente während der Laufzeit von der JSON/XML-Serialisierung ausschließen
0
A
Antwort
0
können Sie die Attribute verwenden:
[XmlIgnore]
für XML oder [JsonIgnore]
für JSON.
Zum Beispiel:
[XmlIgnore]
public string MyString { get; set; }
oder
[JsonIgnore]
public string MyString { get; set; }
Hoffnung, das hilft.
0
Ich arbeitete um es mit [DataMember(EmitDefaultValue = false)]
. Also sind alle meine Eigenschaften, die auf Null gesetzt sind, nicht in der Antwort enthalten. Dies ist jedoch nicht die beste Lösung, da ich jetzt keine Nullwerte senden kann und Swagger auch das vollständige Modell anzeigt.
Verwandte Themen
- 1. So ändern Sie den Anwendungsausgabetyp während der Laufzeit
- 2. Ziehen während der Laufzeit
- 3. Anwendungskonfiguration während der Laufzeit einrichten
- 4. Wie können Etiketteneinschränkungen während der Laufzeit geändert werden?
- 5. Mehrdeutiger Referenzfehler während der Kompilierung der Laufzeit
- 6. Debug-JavaScript-Code während der Verkleinerung ausschließen
- 7. TensorFlow: OOM während der Laufzeit
- 8. Schleifen Variablen während der Laufzeit
- 9. So können Sie den Zielordner von Fortify Scans ausschließen
- 10. Verwenden Sie javaOptions von build.sbt während der Laufzeit
- 11. Ändern der Kafka-Aufbewahrungsdauer während der Laufzeit
- 12. Flag während der Laufzeit hinzufügen (Xcode Instruments)
- 13. Interrupt-On-Change während der Laufzeit
- 14. Wie Dialekt während der Laufzeit Ruhezustand erhalten
- 15. Löschen aller Realm-Objekte während der Laufzeit
- 16. Doppelte Ansichten auf Android während der Laufzeit
- 17. Wie Array-Werte während der Laufzeit
- 18. Klassen während der JVM-Laufzeit neu laden
- 19. So entfernen Sie Datenelemente aus HTML
- 20. Kompilieren von String als Code während der Laufzeit auf Android
- 21. Wechseln der Datenbanken in TG2 während der Laufzeit
- 22. Java Keystore während der Laufzeit neu laden
- 23. Neudefinieren eines aufrufbaren Objekts während der Laufzeit
- 24. So deaktivieren Sie den Interceptor der Methode zur Laufzeit
- 25. So können Sie untergeordnete Knoten mit dem XPath-Selektor ausschließen?
- 26. Android: Ändern Kernel-Parameter während der Laufzeit
- 27. Ausschließen von Dateien und Ordnern während der Plugin-Veröffentlichung
- 28. Wie können Sie Ausnahmen während der Laufzeit Ihres Codes am besten behandeln?
- 29. JTree während der Laufzeit neu laden
- 30. So können Sie unerwünschte Elemente aus Azure Diagnostics ausschließen Trace
Vergessen Sie auch nicht, 'System.Xml.Serialization' bzw.' Newtonsoft.Json' zu verwenden. –
'[IgnoreDataMember]' funktioniert für beide, das weiß ich. Aber das muss zur Laufzeit je nach Konfiguration eingestellt werden ... – Chris
ich sehe. Sie könnten Ihren eigenen JSON-Konverter schreiben, der Ihre Bedingungen zur Laufzeit verwenden kann. Ein weiterer Beitrag, der helfen könnte: [hier] (http://stackoverflow.com/questions/27397494/web-api-conditional-serialization-of-properties-at-runtime) –