Maison >développement back-end >C++ >Pourquoi ma désérialisation JSON échoue-t-elle avec le message « Impossible de désérialiser l'objet JSON actuel » ?

Pourquoi ma désérialisation JSON échoue-t-elle avec le message « Impossible de désérialiser l'objet JSON actuel » ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-08 06:11:44852parcourir

Why Does My JSON Deserialization Fail with

Échec de la désérialisation JSON : impossible d'analyser l'objet JSON dans une liste d'objets

Lorsque vous essayez de désérialiser une chaîne JSON dans une liste personnalisée d'objets, vous pouvez rencontrer l'erreur : "Impossible de désérialiser l'objet JSON actuel (par exemple : {"name":"value"}) pour taper 'System.Collections.Generic' .List1',因为该类型需要一个JSON数组(例如:[1,2,3]`) pour être désérialisé correctement".

Cette erreur est causée par le fait que la structure JSON ne correspond pas au format attendu. Les tableaux JSON sont utilisés pour représenter des listes ou des collections, tandis que les objets JSON sont utilisés pour représenter des paires clé-valeur. Dans cet exemple, la chaîne JSON contient un seul objet dont la propriété « data » est un tableau d'objets. Pour résoudre ce problème, vous devez désérialiser la chaîne JSON dans une structure de classe appropriée.

Comprendre la structure JSON

La structure de chaîne JSON fournie est la suivante :

<code class="language-json">{"data":[{"target_id":9503123,"target_type":"user"}]}</code>

Il contient un seul objet dont la propriété "data" est un tableau d'objets.

Code de désérialisation correct

La ligne de code à l'origine de l'erreur est :

<code class="language-csharp">List<rootobject> datalist = JsonConvert.DeserializeObject<list>(jsonstring);</code>

Cette ligne tente de désérialiser une chaîne JSON en une liste d'objets RootObject. Cependant, la chaîne JSON contient un seul objet, pas une liste d'objets. Pour corriger cette erreur, remplacez le code par :

<code class="language-csharp">RootObject datalist = JsonConvert.DeserializeObject<rootobject>(jsonstring);</code>

Ce code corrigé désérialise la chaîne JSON en un seul objet RootObject, qui correspond correctement à la structure JSON.

Conclusion

Vous pouvez résoudre l'erreur « Impossible de désérialiser l'objet JSON actuel » en vous assurant que le code correspond correctement à la structure JSON. Comprendre le format attendu d'une chaîne JSON est crucial pour une désérialisation réussie.

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