ホームページ > バックエンド開発 > C++ > JSON.NET では、動的キーを使用して JSON をアクセス可能なオブジェクトに効率的に逆シリアル化するにはどうすればよいでしょうか?

JSON.NET では、動的キーを使用して JSON をアクセス可能なオブジェクトに効率的に逆シリアル化するにはどうすればよいでしょうか?

Patricia Arquette
リリース: 2025-01-07 12:31:41
オリジナル
536 人が閲覧しました

How can JSON.NET efficiently deserialize JSON with dynamic keys into accessible objects?

JSON.NET を使用した動的キー付きオブジェクトの逆シリアル化

動的キーを持つオブジェクトを含む JSON データを操作する場合、従来のクラスの逆シリアル化では課題が生じる可能性があります。この記事では、JSON.NET を使用してこのシナリオに取り組む方法を検討します。

問題ステートメント

次の 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"
        }
    }
}
ログイン後にコピー

各オブジェクトに直接アクセスするにはどうすればよいですか?手動キーを必要とせずに、このデータからparsing?

ソリューション

JSON.NET は、Dictionary を使用して、動的キーを持つオブジェクトを逆シリアル化するための便利なソリューションを提供します。クラス。このクラスを使用すると、キーが文字列で値が T 型のオブジェクトである JSON オブジェクトを辞書として表すことができます。

実装

これを実現するには、次の 2 つのクラスを定義します。

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; }
}
ログイン後にコピー
string json = @"
{
    ""users"": {
        ""10045"": {
            ""name"": ""steve"",
            ""state"": ""NY"",
            ""id"": ""ebb2-92bf-3062-7774""
        },
        ""12345"": {
            ""name"": ""mike"",
            ""state"": ""MA"",
            ""id"": ""fb60-b34f-6dc8-aaf7""
        },
        ""100034"": {
            ""name"": ""tom"",
            ""state"": ""WA"",
            ""id"": ""cedf-c56f-18a4-4b1""
        }
    }
}";

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

使用法

次のコードは、からオブジェクトにアクセスする方法を示しています。逆シリアル化されたデータ:

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

出力

コードは次の出力を生成します:

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

以上がJSON.NET では、動的キーを使用して JSON をアクセス可能なオブジェクトに効率的に逆シリアル化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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