Maison >développement back-end >C++ >Pourquoi la désérialisation JSON échoue-t-elle lorsqu'un tableau est attendu en tant qu'objet?

Pourquoi la désérialisation JSON échoue-t-elle lorsqu'un tableau est attendu en tant qu'objet?

Susan Sarandon
Susan Sarandonoriginal
2025-01-27 05:21:11208parcourir

Why Does JSON Deserialization Fail When an Array is Expected as an Object?

La désérialisation du tableau JSON en objet attendu a échoué : "Impossible de désérialiser le tableau en objet"

Tenter de désérialiser un tableau JSON en un objet d'une classe spécifique peut entraîner l'erreur suivante : "Impossible de désérialiser un tableau JSON (par exemple [1,2,3]) pour taper 'MyClass' car ce type nécessite des objets JSON. (tel que {"name":"value"}) peut être désérialisé correctement."

Cette erreur indique que les données JSON sont au format tableau, alors que la classe cible attend un format d'objet unique. Pour résoudre ce problème, considérez ce qui suit :

1. Désérialisez le tableau JSON en collection :

Si vous souhaitez désérialiser un tableau JSON en une collection d'objets, vous pouvez modifier le code comme suit :

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);</code>

Dans ce cas, le tableau JSON sera désérialisé en une liste d'objets RetrieveMultipleResponse.

2. Assurez-vous que le JSON est correctement formaté en tant qu'objet :

Alternativement, si vous devez désérialiser les données JSON en un seul objet, vous pouvez vérifier que le JSON est correctement formaté. Les chaînes JSON doivent être placées entre accolades ({}) et doivent contenir des paires clé-valeur. L'exemple JSON suivant représente un objet valide :

<code class="language-json">{
    "Attributes": [
        ...
    ],
    "Name": "account",
    "Id": "1"
}</code>

Après avoir formaté le JSON en objet, vous pouvez utiliser le code suivant pour le désérialiser :

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);</code>

Autres options :

  • Vous pouvez également ajouter un attribut [JsonArray] à la classe cible pour forcer la désérialisation à partir d'un tableau JSON.
  • Si vous contrôlez les données JSON, vous pouvez les modifier dans le format d'objet souhaité avant de les désérialiser.

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