Maison >développement back-end >C++ >Pourquoi la désérialisation JSON échoue-t-elle lorsqu'un type de liste attend des données JSON non matricielles ?
Gestion des erreurs de désérialisation JSON : type de liste et données JSON hors tableau
Lors de la désérialisation de données JSON à l'aide de JsonConvert de Newtonsoft, les développeurs rencontrent souvent l'erreur : "L'objet JSON actuel ne peut pas être désérialisé pour taper 'System.Collections.Generic.List`1[T]' car le tableau JSON de type A est requis pour désérialiser correctement »
Cette erreur se produit lorsque le type de données cible est une liste (affichée comme « Liste`1 » dans le message d'erreur), mais que les données JSON ne sont pas un tableau. Pour résoudre ce problème, vous devez modifier les données JSON pour qu'elles correspondent au format de tableau attendu ou ajuster le type de données cible pour accepter les formats non matriciels.
Conversion de données JSON
Si vos données JSON sont en fait un tableau mais ne sont pas représentées sous cette forme, vous devrez les convertir au format tableau avant de les désérialiser. Vous pouvez utiliser les classes JObject ou JArray de JSON.NET à cet effet. Par exemple, si vos données JSON sont au format suivant :
<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>
Vous pouvez utiliser le code suivant pour le convertir au format tableau :
<code>JObject obj = JObject.Parse(jsonstring); jsonstring = obj["data"].ToString();</code>
Cela convertira les données JSON au format de tableau suivant :
<code>[{"target_id":9503123,"target_type":"user"}]</code>
Ajuster le type de données cible
Si vos données JSON ne sont pas un tableau, vous devez ajuster le type de données cible pour accepter les formats non-tableaux. Dans ce cas, vous devez changer le type List
<code>RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);</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!