特定の構造を持つ JSON データを逆シリアル化すると、特に混合型の配列を扱う場合に課題が生じる可能性があります。 JSON.NET の使用方法に関する完全なソリューションは次のとおりです:
1. 混合型配列と辞書
この場合、プレーヤーのコレクションは実際にユーザー名をキーとし、混合タイプの配列を値として持つ辞書です。
2. Player の名前のない値
Player クラスの予期されるプロパティと一致し、値の配列を正しい順序で読み取るカスタム コンバータを作成します。
<code>public class ObjectToArrayConverter<T> : JsonConverter { // ... 省略实现细节 }</code>
3. カスタム プレーヤー クラス
コンバーターを Player クラスに適用し、JsonPropertyAttribute.Order を使用してプロパティの順序を指定します。
<code>[JsonConverter(typeof(ObjectToArrayConverter<Player>))] public class Player { [JsonProperty(Order = 1)] public int UniqueID { get; set; } [JsonProperty(Order = 2)] public string PlayerDescription { get; set; } // ... 其他字段(根据需要) }</code>
4. ルートオブジェクト
プレイヤーの辞書を含む、厳密に型指定されたルート オブジェクトを作成します:
<code>public class ScoreboardResults { public int timestamp { get; set; } public int total_players { get; set; } public int max_score { get; set; } public Dictionary<string, Player> players { get; set; } }</code>
5. Newtonsoft を使用してデシリアライズします
<code>var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
デモの例:
この改訂された回答では、画像とその形式が維持され、文章の明瞭さと流れが改善されていますが、重要な変更は記事の内容を実現するための文の構造と単語の選択です。疑似オリジナルバージョン
以上が混合型の JSON 配列を厳密に型指定された C# クラスに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。