Maison > développement back-end > C++ > Comment désérialiser un tableau JSON de type mixte en une classe C# fortement typée ?

Comment désérialiser un tableau JSON de type mixte en une classe C# fortement typée ?

Linda Hamilton
Libérer: 2025-01-24 04:16:07
original
156 Les gens l'ont consulté

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

Désérialiser un tableau de valeurs avec un modèle fixe en une classe de données fortement typée

La désérialisation des données JSON avec une structure spécifique peut présenter des défis, en particulier lorsqu'il s'agit de tableaux de types mixtes. Voici la solution complète pour utiliser JSON.NET :

1. Tableau de type mixte et dictionnaire

Dans ce cas, la collection de joueurs est bien un dictionnaire avec des noms d'utilisateur comme clés et un tableau de types mixtes comme valeurs.

2. Valeurs sans nom dans Player

Créez un convertisseur personnalisé qui lit le tableau de valeurs dans le bon ordre, correspondant aux propriétés attendues sur la classe Player :

<code>public class ObjectToArrayConverter<T> : JsonConverter
{
    // ... 省略实现细节
}</code>
Copier après la connexion

3. Classe de joueur personnalisé

Appliquez le convertisseur à votre classe Player et utilisez JsonPropertyAttribute.Order pour spécifier l'ordre des propriétés :

<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>
Copier après la connexion

4. Objet racine

Créez un objet racine fortement typé contenant un dictionnaire de joueurs :

<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>
Copier après la connexion

5. Désérialiser à l'aide de Newtonsoft

<code>var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>
Copier après la connexion

Exemple de démonstration :

Cette réponse révisée conserve l'image et son format tout en reformulant le texte pour une clarté et une fluidité améliorées. Les blocs de code restent inchangés, car ils sont cruciaux pour le contenu de l'article. Les principaux changements concernent la structure des phrases et le choix des mots pour obtenir un résultat. version pseudo-originale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal