Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une erreur de désérialisation « Incompatibilité de type » avec mes données JSON ?

Pourquoi est-ce que j'obtiens une erreur de désérialisation « Incompatibilité de type » avec mes données JSON ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-08 06:02:42425parcourir

Why Am I Getting a

Erreur d'incompatibilité du type de désérialisation JSON

En programmation, rencontrer l'erreur "Impossible de désérialiser l'objet JSON actuel (par exemple : {"name":"value"})..." est un problème courant. Cette erreur se produit lorsque la structure des données JSON est incohérente avec le type attendu défini dans le code.

Dans l'extrait de code suivant :

<code class="language-csharp">    //jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]}
    List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>

Le problème vient du type désérialisé. Cette ligne tente de désérialiser la chaîne JSON jsonstring en List<RootObject>, en attendant un tableau d'objets. Cependant, la structure de données JSON est un objet qui n'a qu'une seule propriété appelée data, qui contient un tableau d'objets.

Pour résoudre ce problème, le type désérialisé doit correspondre à la structure des données JSON. Dans ce cas, la ligne de désérialisation correcte serait :

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

Les objets JSON contenant la propriété datalist (qui contient un tableau d'objets) peuvent être désérialisés correctement en déclarant RootObject comme data. Cela évite les erreurs d'incompatibilité de type car désormais le type attendu du code est cohérent avec la structure réelle des données JSON.

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