Json.Net 除外属性を使用したシリアル化
Json.Net を使用してオブジェクトをシリアル化する場合、逆シリアル化時には一部のプロパティが必要ですが、シリアル化時には必要ない場合があります。この記事では、このシナリオを実装するためのいくつかの方法について説明します。
方法 1: 条件付きシリアル化
Json.Net は、シリアル化を条件付きで制御できる ShouldSerialize メソッドをサポートしています。必要なプロパティの ShouldSerialize メソッドを定義し、false を返すように設定します:
<code class="language-csharp">class Config { public Fizz ObsoleteSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; } }</code>
方法 2: JObject を使用して JSON を操作する
オブジェクトを JObject に逆シリアル化した後、シリアル化する前にプロパティを手動で削除します。
<code class="language-csharp">JObject jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); string json = jo.ToString();</code>
方法 3: 属性を使用する
a. プライベート セッターを使用してプロパティを無視します
シリアル化の属性を除外するには、[JsonIgnore]
属性を使用します。 [JsonProperty]
を使用して代替プライベート プロパティ セッターに適用します:
<code class="language-csharp">class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingAlternateSetter { set { ObsoleteSetting = value; } } }</code>
b. パブリック セッターを使用してプロパティ
を無視します。 または、[JsonProperty]
でパブリック プロパティ セッターを使用し、[JsonIgnore]
を使用してそのゲッターを除外します。
<code class="language-csharp">class Config { [JsonProperty("ObsoleteSetting")] public Fizz ObsoleteSetting { set; private get; } }</code>
以上がJson.Net でのシリアル化からプロパティを除外するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。