JSON.NET での選択的な属性の逆シリアル化
JSON 互換性を維持しながら、シリアル化されたプロパティを列挙型からクラスに変換したい場合があります。 JSON.NET は、このニーズに対処するためのいくつかの方法を提供します。
メソッド 1: ShouldSerialize メソッド
JSON.NET は ShouldSerialize メソッドを提供します。これが含まれないようにするには、ShouldSerializePropertyName メソッドを作成します。ここで、PropertyName はシリアル化から除外されるプロパティです。例:
<code class="language-csharp">public class Config { public Fizz ObsoleteSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; // 从序列化中排除 ObsoleteSetting } }</code>
方法 2: JObject を使用して
を操作するJsonConvert.SerializeObject を使用する代わりに、Config オブジェクトを JSON オブジェクト (JObject) に変換し、必要なプロパティを削除して、結果の JObject をシリアル化します。
<code class="language-csharp">var jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); var json = jo.ToString();</code>
方法 3: 属性ベースの除外
ターゲット プロパティに [JsonIgnore] を適用すると、シリアル化から確実に除外されます。ただし、プロパティを逆シリアル化するには、同じプロパティ名でプライベート セッターを作成し、それに [JsonProperty] を適用します。例:
<code class="language-csharp">public class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingSetter { set { ObsoleteSetting = value; } } }</code>
これらのテクノロジーを採用することで、プロパティのシリアル化と逆シリアル化を選択的に制御し、プロパティの変更に対応しながら、既存の JSON 構成との互換性を確保できます。
以上が互換性を維持しながら JSON.NET のプロパティを選択的に逆シリアル化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。