ホームページ > バックエンド開発 > C++ > 互換性を維持しながら JSON.NET のプロパティを選択的に逆シリアル化するにはどうすればよいですか?

互換性を維持しながら JSON.NET のプロパティを選択的に逆シリアル化するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-10 20:04:42
オリジナル
740 人が閲覧しました

How Can I Selectively Deserialize Properties in JSON.NET While Maintaining Compatibility?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート