web-dev-qa-db-ja.com

.NET JSONシリアル化中にフィールドを無視します。 [XmlIgnore]に似ていますか?

.NET 3.5 sp1でJSON文字列としてブラウザに送信されるPOCOクラスがあります。デフォルトのJSONシリアル化を使用していますが、無視したいフィールドがいくつかあります。それらに[System.Xml.Serialization.XmlIgnore]のような属性を付けて、それらがシリアル化されないようにします。

78

モデルでは ScriptIgnore 属性を次のように使用します。

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

この特定のシナリオでは、Jsonシリアライザーから循環参照エラーが発生していたため、単に無視しました。私は SOで同様の質問をする で、ModelとViewModelの違いに気づいたときでした。

118
JMP
[ScriptIgnore] 

あなたのハッカベリーです。

26
Wyatt Barnett

[ScriptIgnore(ApplyToOverrides = true)]をテキストテンプレート(.tt)ファイルに追加するだけです。

ここに私のテキストテンプレートの一部

#>
<#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

コードを挿入すると、codeStringGeneratorの上の行が自動生成され、次のようになります。

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

UsingDirectives関数を変更して"using System.Web.Script.Serialization;"を挿入する必要もありました。

2

プロパティを内部として設定します。ただし、構造によって異なります。考慮に入れる。

1
hakan