ホームページ > バックエンド開発 > C++ > 混合型の JSON 配列を厳密に型指定された C# クラスに逆シリアル化する方法

混合型の JSON 配列を厳密に型指定された C# クラスに逆シリアル化する方法

Linda Hamilton
リリース: 2025-01-24 04:16:07
オリジナル
156 人が閲覧しました

How to Deserialize a Mixed-Type JSON Array into a Strongly Typed C# Class?

固定パターンを使用して値の配列を厳密に型指定されたデータ クラスに逆シリアル化します

特定の構造を持つ 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 サイトの他の関連記事を参照してください。

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