ホームページ > バックエンド開発 > C++ > IJsonTypeInfoResolver を使用して .NET 7 で JSON シリアル化をカスタマイズする方法

IJsonTypeInfoResolver を使用して .NET 7 で JSON シリアル化をカスタマイズする方法

Susan Sarandon
リリース: 2024-12-28 22:47:13
オリジナル
116 人が閲覧しました

How to Customize JSON Serialization in .NET 7 with IJsonTypeInfoResolver?

System.Text.Json で IContractResolver を実装する方法

概要

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,
};
ログイン後にコピー

これは、シリアル化中に指定されたプロパティのみを選択的にシリアル化します。

追加メモ

  • プロパティの条件付きシリアル化には、 JsonPropertyInfo.ShouldSerialize メソッド。
  • JsonPropertyInfo.AttributeProvider は、リフレクションまたはソース生成リゾルバーによって作成されたときに、基になる PropertyInfo または FieldInfo を返します。
  • シリアル化メタデータは、ロケールに依存しない文字列ロジックを使用して構築する必要があります。

以上がIJsonTypeInfoResolver を使用して .NET 7 で JSON シリアル化をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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