Maison > développement back-end > C++ > Comment désérialiser des tableaux JSON dans des collections C# à l'aide de JsonConvert.DeserializeObject ?

Comment désérialiser des tableaux JSON dans des collections C# à l'aide de JsonConvert.DeserializeObject ?

Patricia Arquette
Libérer: 2025-01-15 08:55:45
original
978 Les gens l'ont consulté

How to Deserialize JSON Arrays into C# Collections Using JsonConvert.DeserializeObject?

Désérialisez JSON en classe POCO C# à l'aide de JsonConvert.DeserializeObject

JsonConvert.DeserializeObject est un outil puissant pour convertir des données JSON en objets C#. Cependant, lorsque vous essayez de désérialiser JSON en une classe POCO (Plain Old CLR Object) contenant une collection ou des objets imbriqués, une erreur peut se produire.

Un problème courant rencontré lors de l'utilisation de JsonConvert.DeserializeObject est l'incapacité de désérialiser un tableau JSON en une collection fortement typée. Cette erreur provient de la différence fondamentale entre les tableaux JSON et les structures de collection .NET.

Identification des problèmes : tableaux et objets

Dans l'extrait de code fourni, la propriété Accounts est déclarée comme List, dans l'attente de recevoir un tableau d'objets JSON représentant les comptes d'utilisateurs. Cependant, la réponse JSON contient un seul objet contenant plusieurs paires clé-valeur, chacune représentant un compte associé. Cette incompatibilité entraîne une erreur « JsonObjectAttribute peut également être ajouté à un type pour le forcer à se désérialiser à partir d'un objet JSON ».

Solution : utilisez des classes personnalisées et des attributs JsonProperty

Pour résoudre ce problème, vous devez définir une classe personnalisée Account pour représenter les comptes individuels et annoter la propriété Accounts avec l'attribut [JsonProperty] pour spécifier le nom de la propriété correspondante dans la réponse JSON :

<code class="language-csharp">public class Account
{
    public string github;
}

[JsonProperty("accounts")]
public Account Accounts { get; set; }</code>
Copier après la connexion

De plus, l'attribut JsonProperty peut être utilisé dans la classe User pour lier explicitement les propriétés à leurs noms de propriété JSON respectifs, garantissant ainsi un mappage transparent :

<code class="language-csharp">[JsonProperty("username")]
public string Username { get; set; }

[JsonProperty("name")]
public string Name { get; set; }

[JsonProperty("location")]
public string Location { get; set; }</code>
Copier après la connexion

Avec ces modifications implémentées, JsonConvert.DeserializeObject peut facilement désérialiser les réponses JSON en objets User fortement typés, y compris la propriété Accounts renseignée avec le compte associé correspondant.

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