2010-06-01 149 views
18

我在循环引用项目中有一个对象。我已经把[JsonIgnore]场以上,像这样:JsonIgnore属性在ASP.NET中不起作用?

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

我仍然得到循环引用错误,当我序列化对象。唯一没有JsonIgnore的字段是字符串字段,不应该导致这种情况。我还需要做些什么才能让JsonIgnore工作?

谢谢!

+0

我的回答有帮助吗? – JustinStolle 2010-06-07 00:23:51

+0

刚刚从度假回来,今晚我会看看这个,让你知道。谢谢! – 2010-06-07 20:33:20

+2

您也可以使用[ScriptIgnore],因为[JsonIgnore]似乎没有实现。 – defines 2011-11-19 17:12:23

回答

22

您可能有其他一些链接回其父项的属性。使用ReferenceLoopHandling.Ignore设置可防止自我引用循环。

using Newtonsoft.Json; 

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

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

我一直在寻找这个;有几个人提到Newtonsoft支持忽略循环引用,并且没有提到要设置的实际属性。谢谢! – defines 2011-11-19 17:11:50

+0

谢谢但我该如何继续使用'JSon(models,“text/json”,JsonRequestBehavior.AlloGet)'? – Bellash 2014-09-25 13:38:51

+2

@Bellash我不知道你在问什么。 – JustinStolle 2014-09-25 18:21:31