ホームページ > バックエンド開発 > C++ > JSON.Net で部分的なシリアル化と逆シリアル化を実現するにはどうすればよいですか?

JSON.Net で部分的なシリアル化と逆シリアル化を実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-10 19:47:44
オリジナル
305 人が閲覧しました

How Can I Achieve Partial Serialization and Deserialization with JSON.Net?

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

を使用した直接 JSON 操作

より直接的に制御するには、JObject を使用してシリアル化する前に JSON 構造を操作します。

  1. JObject を使用してオブジェクトを JObject.FromObject に変換します。
  2. jo["ObsoleteSetting"].Parent.Remove()を使用して不要なプロパティを削除します。
  3. 変更された JObject をシリアル化します。

方法 3: 属性とプライベート セッター

このアプローチでは、属性とプライベート セッターを組み合わせて、エレガントな部分シリアル化を実現します。

  1. 除外するプロパティを [JsonIgnore] 属性でマークします。
  2. 同じ型でプライベート セッターを作成し、値をパブリック プロパティに割り当てます。
  3. プライベート セッターで [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 サイトの他の関連記事を参照してください。

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