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 :
//jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]} List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);
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 :
RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);
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!