固定パターンを持つ値の配列を厳密に型指定されたデータ クラスに逆シリアル化します
質問:
特定の形式の JSON データを厳密に型指定されたデータ クラスに逆シリアル化する場合には課題があります。データには、文字列と整数値が混在したプレーヤーの配列が含まれており、プレーヤー クラスは完全に名前のない値で、固定された順序で構成されています。
解決策:
カスタム コンバーターとデータ コントラクト属性を組み合わせることで、効率的な逆シリアル化が可能になります。
カスタムコンバーターを作成します:
オブジェクトを配列に変換するカスタムコンバータを実装します:
<code class="language-c#">public class ObjectToArrayConverter<T> : JsonConverter { // 实现 WriteJson 和 ReadJson 函数 }</code>
カスタム コンバーターとデータ コントラクト プロパティをプレーヤーに適用します:
カスタム コンバータを Player クラスに適用し、データ コントラクト属性を使用してそのプロパティの順序を指定します。
<code class="language-c#">[JsonConverter(typeof(ObjectToArrayConverter<Player>))] [DataContract] public class Player { [DataMember(Order = 1)] public int UniqueID { get; set; } [DataMember(Order = 2)] public string PlayerDescription { get; set; } }</code>
ルート オブジェクトを辞書に変更します:
プレーヤーのユーザー名をキーとして使用して、ルート オブジェクトのプレーヤー属性のタイプを辞書に変更します。
<code class="language-c#">public class ScoreboardResults { // ... public Dictionary<string, Player> players { get; set; } }</code>
例:
次のコード例は、このソリューションを使用した逆シリアル化を示しています。
<code class="language-c#">using Newtonsoft.Json; var json = "{...}"; var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
その他の指示:
以上が混合型値の JSON 配列を厳密に型指定された C# データ クラスに逆シリアル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。