web-dev-qa-db-fra.com

Obtention d'une erreur "Impossible de désérialiser le tableau JSON actuel" lors de la désérialisation à l'aide de Json.Net

J'ai une chaîne:

[
  {
    "key": "key1",
    "value": "{'Time':'15:18:42','Data':'15:18:42'}",
    "duration": 5
  },
  {
    "key": "key1",
    "value": "{'Time':'15:18:42','Data':'15:18:42'}",
    "duration": 5
  }
]

Ma classe en modèles:

public class CPacket
{
    public string key { get; set; }
    public string value { get; set; }
    public int duration { get; set; }
}

J'utilise Json.Net, je veux convertir la chaîne ci-dessous en Json Oject.

CPacket c = JsonConvert.DeserializeObject<CPacket>(strPostData);

Mais c'est une erreur:

Une exception de type "Newtonsoft.Json.JsonSerializationException" s'est produite dans Newtonsoft.Json.dll mais n'a pas été gérée dans le code utilisateur
Informations supplémentaires: Impossible de désérialiser le tableau JSON actuel (par exemple [1,2,3]) dans le type 'QuoteAPI.Models.CPacket' car le type nécessite un objet JSON (par exemple {"nom": "valeur" }) pour désérialiser correctement.

14
Ta No Bi

Votre JSON représente un tableau d'objets CPacket, pas seulement un seul objet. Vous devez désérialiser dans une liste.

List<CPacket> list = JsonConvert.DeserializeObject<List<CPacket>>(strPostData);
30
Brian Rogers