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
Linda Hamiltonoriginal
2025-01-24 04:16:07197parcourir

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>

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>

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>

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

<code>var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>

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!

Déclaration:
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