ホームページ >バックエンド開発 >C++ >C# で JSON シリアル化からプロパティを除外する方法は?

C# で JSON シリアル化からプロパティを除外する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-23 16:48:10176ブラウズ

How to Exclude Properties from JSON Serialization in C#?

C# で JSON シリアル化属性を除外する方法

オブジェクトを JSON にシリアル化する場合、シリアル化されたデータのサイズを削減したり、プライバシーを維持したりするために、特定のプロパティを除外することが必要になることがよくあります。この記事では、パブリック プロパティの JSON シリアル化を除外するための 2 つの一般的な方法について説明します。

方法 1: [JsonIgnore] 属性を使用する

一般的な Json.Net ライブラリを使用している場合、[JsonIgnore] 属性を使用してプロパティを除外する直接的な方法が提供されます。この属性でプロパティに注釈を付けることにより、シリアル化と逆シリアル化の両方でプロパティを無視するようにシリアライザーに指示できます。

例:

<code class="language-csharp">public class Car
{
  // 包含在 JSON 中
  public string Model { get; set; }
  public DateTime Year { get; set; }
  public List<string> Features { get; set; }

  // 排除
  [JsonIgnore]
  public DateTime LastModified { get; set; }
}</code>

方法 2: DataContract プロパティと DataMember プロパティを使用する

あるいは、System.Runtime.Serialization 名前空間によって提供される DataContract プロパティと DataMember プロパティを使用することもできます。 DataContract 属性はクラスをシリアル化可能としてマークし、DataMember 属性は含めるプロパティを指定します。

<code class="language-csharp">[DataContract]
public class Computer
{
  // 包含在 JSON 中
  [DataMember]
  public string Name { get; set; }
  [DataMember]
  public decimal SalePrice { get; set; }

  // 排除
  public string Manufacture { get; set; }
  public int StockCount { get; set; }
  public decimal WholeSalePrice { get; set; }
  public DateTime NextShipmentDate { get; set; }
}</code>

詳しい説明

どちらの方法もシリアル化プロセスを操作することで機能します。 [JsonIgnore] 属性は、Json.Net シリアライザーに注釈付きプロパティをスキップするように指示しますが、DataMember 属性はシリアル化するプロパティを明示的に指定します。

[JsonIgnore] 属性の方が使いやすいですが、DataContract 属性と DataMember 属性を使用すると、シリアル化と逆シリアル化をより詳細に制御できます。また、プロパティの名前やシリアル化形式など、シリアル化の他の側面を制御することもできます。

以上がC# で JSON シリアル化からプロパティを除外する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。