在.NET JSON序列化期间忽略字段;类似于[XmlIgnore]?

时间:2009-09-11 15:19:28

标签: c# .net asp.net-mvc json serialization

我有一个POCO类,它作为.NET 3.5 sp1中的JSON字符串发送到浏览器。我只是使用默认的JSON序列化,我有一些我想忽略的字段。我想在它们上面添加类似于[System.Xml.Serialization.XmlIgnore]的属性,以便它们不被序列化。

3 个答案:

答案 0 :(得分:118)

我在模型上使用ScriptIgnore属性,如下所示:

public class Item
{
    [ScriptIgnore]
    public Item ParentItem { get; set; }
}

在这种特殊情况下,我从Json序列化程序中得到一个循环引用错误,所以我只是忽略它。当我转向模型和ViewModel之间的差异时,我asking a similar question here on SO

答案 1 :(得分:26)

[ScriptIgnore] 

是你的huckaberry。

答案 2 :(得分:2)

你只需要添加 [ScriptIgnore(ApplyToOverrides = true)]到您的文字模板(.tt)文件中。

这是

之前我文本模板的一部分
#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

一旦我将代码插入自动生成的codeStringGenerator我的类之上的行,看起来像这样:

[ScriptIgnore(ApplyToOverrides = true)]
public virtual ICollection<Currency> Currencies { get; set; }

我还需要修改UsingDirectives函数以插入"using System.Web.Script.Serialization;"