ホームページ > バックエンド開発 > C++ > System.Text.Json を使用して、ネストされた JSON を適切な C# 型を持つオブジェクトのネストされたディクショナリに逆シリアル化する方法

System.Text.Json を使用して、ネストされた JSON を適切な C# 型を持つオブジェクトのネストされたディクショナリに逆シリアル化する方法

Linda Hamilton
リリース: 2024-12-25 02:40:17
オリジナル
987 人が閲覧しました

How to Deserialize Nested JSON to a Nested Dictionary of Objects with Proper C# Types Using System.Text.Json?

適切な C# 型を使用して、ネストされた JSON をオブジェクトのネストされたディクショナリに逆シリアル化する

C# .Net Core 3.1 では System.Text.Json を使用して逆シリアル化するネストされた JSON オブジェクトを Dictionary に変換します。すべてのオブジェクトが JsonElement になる可能性があります。ただし、逆シリアル化プロセスをカスタマイズして、各 JSON プロパティ タイプに適切な C# タイプを取得できます。

Custom JsonConverter: ObjectAsPrimitiveConverter

As System.Text.Json にはビルド済みのフリーフォーム JSON をプリミティブ型に逆シリアル化するためのサポートには、カスタム JsonConverter が必要です。 ObjectAsPrimitiveConverter。次の機能を提供します:

  • 文字列の変換: JSON 文字列プロパティを C# 文字列に変換
  • 数値の変換: C# への JSON 数値プロパティint/double
  • オブジェクトの変換: JSON オブジェクトのプロパティを Dictionary

コードの実装:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    // Configure converter settings (float format, unknown number handling, object format)
    ...

    public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options)
    {
        // Handle custom serialization if needed
    }

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        // Handle custom deserialization based on token type
    }
}
ログイン後にコピー

設定と使用法:

カスタム コンバーターを使用するには、ObjectAsPrimitiveConverter で JsonSerializerOptions を構成し、必要な設定を指定します:

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
    WriteIndented = true,
};

// Deserialize to object or dynamic
dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
ログイン後にコピー

メモ:

  • コンバーターはエッジを処理します任意の精度の数値などの場合は、プリミティブ C# 型に適合しない可能性があります。エラー処理、またはそのような数値の JsonElement を返すためのオプションが提供されます。
  • さまざまな浮動小数点形式 (double/10 進数) やオブジェクト表現 (Dictionary または ExpandoObject) を使用するようにコンバーターを構成できます。
  • 参考としてデモ フィドルを利用できます。

以上がSystem.Text.Json を使用して、ネストされた JSON を適切な C# 型を持つオブジェクトのネストされたディクショナリに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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