Ho una classe POCO che viene inviata al browser come stringa JSON in .NET 3.5 sp1. Sto solo usando la serializzazione JSON predefinita e ho alcuni campi che voglio ignorare. Voglio mettere un attributo simile a [System.Xml.Serialization.XmlIgnore] su di loro in modo che non siano serializzati.Ignorare un campo durante la serializzazione .NET JSON; simile a [XmlIgnore]?
risposta
Io uso l'attributo ScriptIgnore sul mio modello in questo modo:
public class Item
{
[ScriptIgnore]
public Item ParentItem { get; set; }
}
In questo scenario particolare mi è stato sempre un errore di riferimento circolare del serializzatore JSON, così ho semplicemente ignorato esso. Ero asking a similar question here on SO quando sono stato acceso alla differenza tra un modello e ViewModel.
[ScriptIgnore]
è il tuo huckaberry.
+1 per riferimento Tombstone. – jrummell
In realtà è "Huckle Bearer", ma ti darò un +1 per lo sforzo e il film. :) –
La risposta originale è corretta, dice "huckleberry", non "huckle bearer". http://www.imsdb.com/scripts/Tombstone.html – heisenberg
È sufficiente aggiungere lo [ScriptIgnore(ApplyToOverrides = true)]
nel file modello di testo (.tt).
Ecco una parte del mio modello di testo prima di
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#
Una volta inserito il codice di linea sopra il codeStringGenerator
generato il mio classi auto e si presentava così:
[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }
Ho anche bisogno di modificare la funzione UsingDirectives
per inserire "using System.Web.Script.Serialization;"
'ApplyToOverrides' sembra essere molto importante su una proprietà virtuale – Todd
Impostare la proprietà come interna. Dipende dalla tua struttura, però. Prendere in considerazione.
- 1. Come ignorare JsonProperty (PropertyName = "someName") durante la serializzazione di json?
- 2. Gson aggiunge campo durante la serializzazione
- 3. come rimuovere $ id durante la serializzazione JSON
- 4. Come aggiungere e ignorare un campo per la risposta JSON
- 5. Ottenere un OutOfMemoryException durante la serializzazione su JSON?
- 6. Diversi nomi di proprietà JSON durante la serializzazione e deserializzazione
- 7. Ignorare riferimenti null durante la serializzazione di un enorme documento XML
- 8. Libreria XML simile a simplejson/json? - Python
- 9. SerializationException durante la serializzazione di molti oggetti in .NET
- 10. Ignora nil proprietà durante la serializzazione JSON utilizzando RestKit
- 11. Come localizzare quando serializzazione JSON?
- 12. C# Crea un oggetto .NET per serializzazione JSON e deserializzazione
- 13. Ignorare la proprietà durante la deserializzazione
- 14. Come si personalizza la serializzazione JSON?
- 15. Serializzazione un elenco per JSON
- 16. Attributo C# XmlIgnore e classe XamlWriter - XmlIgnore non funziona
- 17. NET serializzazione ordinazione
- 18. "TypeError: (Integer) non è serializzabile in JSON" durante la serializzazione di JSON in Python?
- 19. Have jackson ignora i campi che sono pigri inizializzati durante la serializzazione a JSON
- 20. Serializzazione Json .NET - modifica il valore della proprietà
- 21. La serializzazione da Python a JSON non riesce su Decimale
- 22. Un modo migliore per evitare l'eccezione di init pigro durante la serializzazione in una risposta JSON
- 23. Problemi con la serializzazione Avro di documenti json campi mancanti
- 24. Soluzione da EntityFramework a JSON? (Un riferimento circolare rilevato durante la serializzazione di un oggetto di tipo ... DynamicProxies)
- 25. Errore Entità a JSON - È stato rilevato un riferimento circolare durante la serializzazione di un oggetto di tipo
- 26. JPA, il modo più veloce per ignorare un campo durante la persistenza?
- 27. Configurazione modificabile umana simile a JSON o simile a un programma YAML in Java
- 28. interni di serializzazione in .Net
- 29. EclipseLink moxy serializzazione JSON
- 30. stream durante la serializzazione con Cap'n'Proto
E se non è POCO ma EntityModel generato, non voglio modificare il codice generato, c'è una soluzione alternativa per aggiungere l'attributo ScriptIgnore al modello di entità generato. – hazimdikenli
@hazimdikenli potrebbe essere necessario utilizzare la classe parziale per questo. –
Non dimenticare di aggiungere un riferimento a "System.Web.Extensions" perché funzioni correttamente – Levitikon