概要
System.Text.Json 名前空間は、 Newtonsoft.Json に代わる最新のツールで、高性能の JSON シリアル化と逆シリアル化を提供します。 .NET。 System.Text.Json では以前は利用できなかった機能の 1 つは、Newtonsoft.Json の IContractResolver インターフェイスと同様に、コントラクト解決プロセスをカスタマイズする方法でした。ただし、この機能は、IJsonTypeInfoResolver の実装を通じて .NET 7 で利用できるようになりました。
Answer
新しい .NET 7 機能: IJsonTypeInfoResolver
.NET 7 以降、 System.Text.Json 名前空間には、コントラクトのカスタマイズを可能にする IJsonTypeInfoResolver インターフェイスが導入されています。このインターフェイスを使用すると、開発者はシリアル化および逆シリアル化中に特定の型のメタデータを変更するカスタム コントラクト リゾルバーを作成できます。
DefaultJsonTypeInfoResolver
System.Text.Json チームは、 IJsonTypeInfoResolver を実装するデフォルトのコントラクト リゾルバー DefaultJsonTypeInfoResolver を提供しましたインターフェース。このリゾルバーは、Newtonsoft.Json の DefaultContractResolver と同様の機能を提供します。 DefaultJsonTypeInfoResolver をサブクラス化するか、それに修飾子を追加して、要件に応じてコントラクト メタデータをカスタマイズできます。
修飾子を使用した DefaultJsonTypeInfoResolver の使用
SelectiveSerializer クラスを操作できるように調整するにはSystem.Text.Json を使用できます。 DefaultJsonTypeInfoResolver の SerializeSelectedFields 拡張メソッド:
var options = new JsonSerializerOptions { TypeInfoResolver = new DefaultJsonTypeInfoResolver() .SerializeSelectedFields("FirstName,Email,Id"), // Add other options as required PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true, };
これは、シリアル化中に指定されたプロパティのみを選択的にシリアル化します。
追加メモ
以上がIJsonTypeInfoResolver を使用して .NET 7 で JSON シリアル化をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。