ホームページ > バックエンド開発 > C++ > Json.Net でのシリアル化からプロパティを除外するにはどうすればよいですか?

Json.Net でのシリアル化からプロパティを除外するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-10 19:52:43
オリジナル
493 人が閲覧しました

How Can I Exclude Properties from Serialization with Json.Net?

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

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