Maison >développement back-end >C++ >Comment réussir à désérialiser JSON dans une classe POCO C# à l'aide de JsonConvert.DeserializeObject ?
Utilisez JsonConvert.DeserializeObject pour analyser JSON en classe POCO C#
Lorsque vous rencontrez des erreurs (telles que l'exception "Impossible de désérialiser...") lors de la désérialisation de JSON vers une classe POCO C#, il est crucial de comprendre les exigences d'une désérialisation réussie.
Plus précisément, la méthode JsonConvert.DeserializeObject
nécessite que le JSON soit conforme à la structure attendue et au type de données définis dans la classe POCO.
Résolution des erreurs
La clé pour résoudre cette erreur réside dans deux aspects :
Déclarer correctement les propriétés de la liste :
Assurez-vous que la réponse JSON contient un tableau d'objets pour les propriétés déclarées comme List<T>
dans la classe POCO. Par exemple :
<code class="language-json"> { "username": "username", // ... 其他属性 "accounts": [ { "github": "github-username" }, // ... 其他帐户 ] }</code>
Dans une classe POCO, l'attribut Accounts
doit être déclaré comme :
<code class="language-csharp"> [JsonProperty("accounts")] public List<Account> Accounts { get; set; }</code>
Utiliser l'attribut JsonProperty :
Les attributs JsonProperty
mappent les noms d'attributs JSON aux attributs de classe POCO correspondants. Par défaut, les noms de propriétés JSON sont sensibles à la casse et correspondent aux noms de propriétés C#. Pour personnaliser ce mappage, utilisez l'attribut JsonProperty
:
<code class="language-csharp"> [JsonProperty("github")] public string GithubUsername { get; set; }</code>
Exemple
Voici un exemple corrigé :
<code class="language-csharp">public class User { [JsonProperty("username")] public string Username { get; set; } // ... 其他属性 [JsonProperty("accounts")] public List<Account> Accounts { get; set; } } public class Account { [JsonProperty("github")] public string GithubUsername { get; set; } } // 反序列化代码 var json = @"{ 'username': 'jdoe', // ... 其他属性 'accounts': [{ 'github': 'jdoe-github' }] }"; var user = JsonConvert.DeserializeObject<User>(json);</code>
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!