Problème de désérialisation JSON : impossible de convertir un objet en liste
Lorsqu'ils tentent de désérialiser un objet JSON dans une liste d'objets personnalisés, les développeurs peuvent rencontrer l'erreur : "Impossible de désérialiser l'objet JSON actuel (par exemple : {"name":"value"}) dans Type 'System.Collections .Liste.générique`1[...]'". Ce problème se produit lorsque la structure JSON ne correspond pas au type de désérialisation cible.
Considérez l'extrait de code suivant :
<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}"; List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
Dans ce scénario, le type de désérialisation cible est List
Solution :
Pour résoudre ce problème, le type de désérialisation cible doit être ajusté pour s'aligner sur la structure JSON.
Désérialisation correcte :
<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
En changeant le type de désérialisation en RootObject, le code est désormais aligné sur la structure JSON et le processus de désérialisation se termine avec succès sans l'erreur ci-dessus. Si vous avez besoin d'accéder à target_id
et target_type
, vous devez poursuivre le traitement de l'objet data
, par exemple : data.data[0].target_id
.
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!