ホームページ > バックエンド開発 > C++ > C# でネストされた JSON をネストされた辞書に逆シリアル化する方法

C# でネストされた JSON をネストされた辞書に逆シリアル化する方法

Susan Sarandon
リリース: 2024-12-29 20:10:20
オリジナル
692 人が閲覧しました

How to Deserialize Nested JSON to a Nested Dictionary in C#?

ネストされた JSON をネストされた辞書に逆シリアル化する C

ネストされた JSON オブジェクトを操作する場合、それらを Dictionary に逆シリアル化することができます。ここで、各キーと値のペアは、JSON オブジェクトのプロパティと値のペアに対応します。ただし、デフォルトでは、System.Text.Json はすべてのオブジェクトを JsonElement オブジェクトに逆シリアル化するため、必要な C# 型が提供されない可能性があります。

Custom JsonConverter

適切な C# 型を実現するには、カスタム JsonConverter。次のコンバータは、すべての JSON 値型を処理し、対応する C# 型に変換します。

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    ...

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        switch (reader.TokenType)
        {
            // Handle null, boolean, string, and number types.

            case JsonTokenType.StartArray:
                // Handle arrays.

            case JsonTokenType.StartObject:
                // Handle objects.

            default:
                throw new JsonException("Unknown token");
        }
    }
}
ログイン後にコピー

コンバータの使用

カスタム コンバータを使用するには、逆シリアル化オプションで指定します。

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

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

Notes

  • JSON は次の数値を表現できます。 .Net のプリミティブ数値型には制限がありますが、精度と大きさは任意です。サポートされていない数値が JsonElements として返されるか、例外がスローされるかを構成できます。
  • 浮動小数点数および Dictionary に対して double または 10 進数を返すようにコンバータをカスタマイズできます。好みに応じて、JSON オブジェクトの場合は ExpandoObject を使用します。

以上がC# でネストされた JSON をネストされた辞書に逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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