.NET Core 3 にアップグレードした後、開発者はクラス フィールドとシリアル化に関連する問題に遭遇する可能性があります。 System.Text.Json.JsonSerializer にはシリアル化と逆シリアル化のためのプロパティが必要ですが、多くの場合、クラス データを表すにはフィールドの方が便利です。ここで、シリアル化および逆シリアル化中にフィールドが正しく処理されることを確認する方法はどうすればよいかという疑問が生じます。
.NET Core 3.1 では、System.Text.Json はデフォルトではフィールドをシリアル化しません。ドキュメントに記載されているように、「フィールドは .NET Core 3.1 の System.Text.Json ではサポートされていません」。
ただし、.NET の新しいバージョンでは、いくつかの解決策が利用可能です。 .NET 5 以降:
これを実証するために、フィールド 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 以降では、年プロパティとモデル フィールドをシリアル化するために次のオプションを使用できます:
<code>var options = new JsonSerializerOptions { IncludeFields = true }; string json = JsonSerializer.Serialize(car, options);</code>
<code>[JsonInclude] public string Model; string json = JsonSerializer.Serialize(car);</code>
これらの手法を使用することで、開発者は、クラス属性と一貫性を保ちながら、シリアル化および逆シリアル化中にクラス フィールドが正しく処理されることを保証できます。
以上がSystem.Text.Json を使用してクラス フィールドをシリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。