JSON.Net の部分シリアル化および逆シリアル化手法
JSON.Net は、シリアル化と逆シリアル化を柔軟に制御できます。 このガイドでは、シリアル化プロセスからプロパティを選択的に除外する方法について説明します。
方法 1: ShouldSerialize
JSON.Net では、ShouldSerialize
メソッドを使用した条件付きプロパティのシリアル化が可能です。 プロパティを除外するには、常に ShouldSerialize[PropertyName]()
.false
を返す
例:
<code class="language-csharp">class Config { public Fizz ObsoleteSetting { get; set; } public Bang ReplacementSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; } }</code>
これにより、ObsoleteSetting
がシリアル化された JSON に含まれることがなくなります。
方法 2: JObject
より直接的に制御するには、JObject
を使用してシリアル化する前に JSON 構造を操作します。
JObject
を使用してオブジェクトを JObject.FromObject
に変換します。jo["ObsoleteSetting"].Parent.Remove()
を使用して不要なプロパティを削除します。JObject
をシリアル化します。方法 3: 属性とプライベート セッター
このアプローチでは、属性とプライベート セッターを組み合わせて、エレガントな部分シリアル化を実現します。
[JsonIgnore]
属性でマークします。[JsonProperty]
を使用し、パブリック プロパティと同じ JSON 名を付けます。例:
<code class="language-csharp">class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingAlternateSetter { set { ObsoleteSetting = value; } } public Bang ReplacementSetting { get; set; } }</code>
これにより、内部使用を維持しながら、シリアル化中に ObsoleteSetting
が効果的に隠蔽されます。 ニーズとコーディング スタイルに最も適した方法を選択してください。
以上がJSON.Net で部分的なシリアル化と逆シリアル化を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。