2010-06-01 13 views
18

Ich habe ein Objekt in meinem Projekt mit kreisförmigen Referenzen. Ich habe put [JsonIgnore] über dem Feld wie folgt:JsonIgnore-Attribute funktionieren nicht in ASP.NET?

[JsonIgnore] 
    public virtual Foobar ChildObject { get; set; } 

Ich bin immer noch Kreisreferenzfehler bekommen, wenn ich das Objekt serialisiert werden soll. Die einzigen Felder, die kein JsonIgnore haben, sind String-Felder und sollten dies nicht verursachen. Gibt es noch etwas, was ich tun muss, um JsonIgnore zum Arbeiten zu bringen?

Danke!

+0

Hat meine Antwort geholfen? – JustinStolle

+0

Gerade aus dem Urlaub zurück, werde ich heute Abend darauf schauen und Sie wissen lassen. Vielen Dank! –

+2

Sie können auch [ScriptIgnore] verwenden, da [JsonIgnore] nicht implementiert zu sein scheint. – defines

Antwort

22

Sie haben wahrscheinlich eine andere Eigenschaft, die auf ihre Eltern verweist. Verwenden Sie die Einstellung ReferenceLoopHandling.Ignore, um selbstreferenzierende Schleifen zu verhindern.

using Newtonsoft.Json; 

JsonSerializerSettings jsSettings = new JsonSerializerSettings(); 
jsSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; 

string json = JsonConvert.SerializeObject(foobars, Formatting.None, jsSettings); 
+0

Ich habe überall nach diesem gesucht; Mehrere Erwähnungen, dass Newtonsoft das Ignorieren von Zirkelreferenzen und keine Erwähnung der tatsächlich zu setzenden Eigenschaft unterstützt. Vielen Dank! – defines

+0

danke Aber wie benutze ich 'JSon (Modelle," text/json ", JsonRequestBehavior.AlloGet)' '? – Bellash

+2

@Bellash Ich weiß nicht, was Sie fragen. – JustinStolle

Verwandte Themen