ホームページ > バックエンド開発 > C++ > C#で動的子オブジェクトキーを使用してJSONを逆シリアル化する方法?

C#で動的子オブジェクトキーを使用してJSONを逆シリアル化する方法?

Mary-Kate Olsen
リリース: 2025-01-07 12:39:42
オリジナル
723 人が閲覧しました

How to Deserialize JSON with Dynamic Child Object Keys in C#?

動的キーを使用した子オブジェクトの逆シリアル化

特定のシナリオでは、子オブジェクトの動的キーを含む JSON データが発生することがあります。このデータを効果的に逆シリアル化するには、従来のクラスの代わりに辞書を使用することを検討してください。

逆シリアル化に辞書を使用する

子オブジェクトごとに従来のクラスを作成する代わりに、以下を利用できます。辞書データを表すために。ディクショナリ内の各キーは動的キーを表し、各値は T 型のオブジェクトであり、子オブジェクトのデータ構造を表す必要があります。

クラスの定義

この例では、次のようにクラスを定義します:

class RootObject
{
    public Dictionary<string, User> users { get; set; }
}

class User
{
    public string name { get; set; }
    public string state { get; set; }
    public string id { get; set; }
}
ログイン後にコピー

JSON の逆シリアル化データ

JSON データを RootObject クラスに逆シリアル化するには、次のコードを使用します。

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);
ログイン後にコピー

子オブジェクトへのアクセス

1 回逆シリアル化すると、ディクショナリを通じて子オブジェクトに直接アクセスできます。 key:

foreach (string key in root.users.Keys)
{
    User user = root.users[key];
    Console.WriteLine($"key: {key}");
    Console.WriteLine($"name: {user.name}");
    Console.WriteLine($"state: {user.state}");
    Console.WriteLine($"id: {user.id}");
    Console.WriteLine();
}
ログイン後にコピー

次の JSON データについて考えてみましょう:

{
    "users" : {
        "100034" : {
            "name"  : "tom",
            "state" : "WA",
            "id"    : "cedf-c56f-18a4-4b1"
        },
        "10045" : {
            "name"  : "steve",
            "state" : "NY",
            "id"    : "ebb2-92bf-3062-7774"
        },
        "12345" : {
            "name"  : "mike",
            "state" : "MA",
            "id"    : "fb60-b34f-6dc8-aaf7"
        }
    }
}
ログイン後にコピー

提供されたコードを使用すると、データを逆シリアル化し、各子オブジェクトにアクセスすると、次の出力が得られます:

key: 10045
name: steve
state: NY
id: ebb2-92bf-3062-7774

key: 12345
name: mike
state: MA
id: fb60-b34f-6dc8-aaf7

key: 100034
name: tom
state: WA
id: cedf-c56f-18a4-4b1
ログイン後にコピー

以上がC#で動的子オブジェクトキーを使用してJSONを逆シリアル化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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