2010-06-01 20 views
18

Projemde dairesel referanslı bir nesne var. Ben şöyle alanın üstünde [JsonIgnore] koyduk: Ben nesne seri zamanJsonIgnore öznitelikleri ASP.NET'te çalışmıyor mu?

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

Hala dairesel referans hataları alıyorum. JsonIgnore olmayan tek alanlar dize alanlarıdır ve buna neden olmamalıdır. JsonIgnore'u işe almak için yapmam gereken başka bir şey var mı?

Teşekkürler!

+0

Cevabım yardım ettiniz mi? – JustinStolle

+0

Sadece tatilden döndüm, bu gece ona bakacağım ve size haber vereceğim. Teşekkürler! –

+2

Ayrıca [ScriptIgnore] 'ı [JsonIgnore] uygulanmadığı gibi kullanabilirsiniz. – defines

cevap

22

Muhtemelen, ebeveynine bağlanan başka bir mülkünüz var. Öz referans döngülerini önlemek için ReferenceLoopHandling.Ignore ayarını kullanın.

using Newtonsoft.Json; 

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

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

Bunun için her yere bakıyorum; Newtonsoft'un döngüsel referansları görmezden gelmeyi desteklediği ve gerçek mülkiyetten bahsetmediği yönünde birkaç söz vardır. Teşekkürler! – defines

+0

Teşekkürler Ama nasıl kullanmaya devam ediyorum? JSon (modeller, "text/json", JsonRequestBehavior.AlloGet) '? – Bellash

+2

@Bellash Ne sorduğunuzu bilmiyorum. – JustinStolle