Voici mon code:Parsing un tableau de JSON dans une classe C#
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream = new StreamReader(resp.GetResponseStream(), enc);
JsonSerializer serializer = new JsonSerializer();
JsonTextReader jsreader = new JsonTextReader(loResponseStream);
results = (mHealthData)serializer.Deserialize(jsreader, typeof(mHealthData)); ***
loResponseStream.Close();
public class mHealthData
{ // Class for the Mhealth Data
public class RootObject
{
public string source { get; set; }
public string name { get; set; }
public string type { get; set; }
public string unit { get; set; }
public double value { get; set; }
public string timestamp { get; set; }
}
}
Ceci est l'erreur que je reçois sur la ligne marquée avec un * *:
Impossible désérialiser le tableau JSON actuel (par exemple [1,2,3]) dans le type "MHealthPlugin.mHealthData" car le type nécessite un objet JSON (par exemple {"name": "value"}) pour désérialiser correctement. Pour corriger cette erreur, changez le JSON en un objet JSON (par exemple {"name": "value"}) ou changez le type désérialisé en un tableau ou un type qui implémente une interface de collection (par exemple ICollection, IList) comme
List<T>
peut être désérialisé à partir d'un tableau JSON. JsonArrayAttribute peut également être ajouté au type pour le forcer à désérialiser à partir d'un tableau JSON.
Je n'ai aucune idée de comment résoudre ce problème. J'ai essayé de mettre List<mHealthData>
pratiquement partout dans le code et ça n'aide pas. Les autres appels que je fais fonctionnent bien. Pour référence, voici un exemple de ce que le JSON je suis en train d'analyser ressemble:
[{"source":"hi","name":"G","type":"number","unit":null,"value":126,"timestamp":"1974-07-27T09:35:12Z"},{"source":"hi","name":"G","type":"number","unit":null,"value":120,"timestamp":"1974-07-27T09:35:12Z"}]
vous ne pouvez pas définir une classe comme une liste, en ce moment, vous avez juste une classe nommée Liste. ce n'est pas vraiment une liste ou liée à une liste du tout. –
Nealon
FYI: Si vous utilisez JSON.NET (aka Newtonsoft.Json), il y a des one-liners pour sérialiser vers/depuis une chaîne: la désérialisation peut être faite avec 'var x = JsonConvert.DeserializeObject (myJson); '. Beaucoup plus agréable que de traiter tous les flux et les lecteurs. –
aussi, de quel type est votre variable de réponse? – Nealon