動的なキー名を使用した 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 サイトの他の関連記事を参照してください。