ホームページ >バックエンド開発 >C++ >System.Text.Json を使用してクラス フィールドをシリアル化する方法

System.Text.Json を使用してクラス フィールドをシリアル化する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-14 07:43:42454ブラウズ

How to Serialize Class Fields with System.Text.Json?

System.Text.Json.JsonSerializer とクラス フィールドの使用

.NET Core 3 にアップグレードした後、開発者はクラス フィールドとシリアル化に関連する問題に遭遇する可能性があります。 System.Text.Json.JsonSerializer にはシリアル化と逆シリアル化のためのプロパティが必要ですが、多くの場合、クラス データを表すにはフィールドの方が便利です。ここで、シリアル化および逆シリアル化中にフィールドが正しく処理されることを確認する方法はどうすればよいかという疑問が生じます。

.NET Core 3.1 では、System.Text.Json はデフォルトではフィールドをシリアル化しません。ドキュメントに記載されているように、「フィールドは .NET Core 3.1 の System.Text.Json ではサポートされていません」。

ただし、.NET の新しいバージョンでは、いくつかの解決策が利用可能です。 .NET 5 以降:

  • パブリック フィールドは、JsonSerializerOptions.IncludeFields を true に設定することでシリアル化できます。
  • [JsonInclude] 属性を使用してフィールドをシリアル化するようにマークすることもできます。

これを実証するために、フィールド Model とプロパティ Year を含む Car クラスを考えてみましょう:

<code>public class Car
{
    public int Year { get; set; }
    public string Model;
}</code>

.NET Core 3.1 では、IncludeFields が true に設定されていない場合、Car をシリアル化した結果は次のようになります。

<code>{"Year":2008}</code>

モデルフィールドは無視されます。

.NET 5 以降では、年プロパティとモデル フィールドをシリアル化するために次のオプションを使用できます:

  1. IncludeFields を有効にする:
<code>var options = new JsonSerializerOptions { IncludeFields = true };
string json = JsonSerializer.Serialize(car, options);</code>
  1. [JsonInclude] 属性を使用します:
<code>[JsonInclude]
public string Model;
string json = JsonSerializer.Serialize(car);</code>

これらの手法を使用することで、開発者は、クラス属性と一貫性を保ちながら、シリアル化および逆シリアル化中にクラス フィールドが正しく処理されることを保証できます。

以上がSystem.Text.Json を使用してクラス フィールドをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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