ホームページ > バックエンド開発 > C++ > Newtonsoft.Json.Net を使用して、JSON 内の動的数値キー名を持つ子オブジェクトを逆シリアル化する方法

Newtonsoft.Json.Net を使用して、JSON 内の動的数値キー名を持つ子オブジェクトを逆シリアル化する方法

Barbara Streisand
リリース: 2025-01-13 19:00:43
オリジナル
159 人が閲覧しました

How to Deserialize Child Objects with Dynamic Numeric Key Names in JSON using Newtonsoft.Json.Net?

Newtonsoft.Json.Net を使用して、動的な数値キー名を持つサブオブジェクトを逆シリアル化します

動的なキー名を使用した JSON データの逆シリアル化は、特にキーが数値の場合に困難になることがあります。 Newtonsoft.Json.Net を使用してこの問題を解決する方法を次に示します。

提供された JSON 構造には、既知および未知のプロパティを持つ親「users」オブジェクトが含まれています。未知のプロパティに対応するには、カスタム コンバーターが必要です。

カスタムコンバータ

TypedExtensionDataConverter クラスは、動的プロパティを持つオブジェクトの逆シリアル化を処理するカスタム JSON コンバーターです。これにより、不明なプロパティが型付きコンテナー (この場合は User オブジェクトのディクショナリ) に逆シリアル化されます。

コンバーターは JsonTypedExtensionDataAttribute 属性を使用して、動的データを含む必要がある属性を識別します。

変更されたクラス定義

カスタム コンバーターを使用するために、「Users」クラスと「User」クラスがプロパティとコンバーターを含むように変更されました。

ユーザークラス:

<code>[JsonConverter(typeof(TypedExtensionDataConverter<Users>))]
class Users
{
    ...
    [JsonTypedExtensionData]
    public Dictionary<string, User> UserTable { get; set; }
}</code>
ログイン後にコピー

User クラスは変更されません。

使用方法

カスタム コンバーターと変更されたクラス定義を使用すると、次のように逆シリアル化を実行できます。

<code>string json = @"...与之前相同的 JSON...";

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

Users オブジェクトの UserTable プロパティには、逆シリアル化された User オブジェクトが含まれ、そのデータへのアクセスが可能になります。

結論

カスタム JSON コンバーターを使用すると、動的な数値キー名を持つサブオブジェクトを逆シリアル化でき、複雑な JSON 構造をシームレスに処理できるようになります。

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

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