J'ai examiné l'exemple après l'exemple après l'exemple et aucune de mes tentatives ont fonctionné.Problème avec la désérialisation avec JSON avec C#
Je tente de désérialiser ce retour JSON:
{
"status": "success",
"data": {
"result": "match",
"id_user": 26564,
"dob_match": null,
"first_name_match": null,
"last_name_match": null
},
"code": 200
}
Voici ma JSON déclaration de classe d'objet:
[DataContract]
internal class DccCoachApi
{
[DataMember]
public string result { get; set; }
public string id_user { get; set; }
public string dob_match { get; set; }
public string first_name_match { get; set; }
public string last_name_match { get; set; }
}
Dans ma méthode de flux, ma variable streamRead est remplie: {"status":"success","data":{"result":"match","id_user":26564,"dob_match":null,"first_name_match":null,"last_name_match":null},"code":200}
La méthode 1 ne remplit pas coachId:
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(streamRead)))
{
// Deserialization from JSON
var deserializer = new DataContractJsonSerializer(typeof(DccCoachApi));
var dccObj = (DccCoachApi)deserializer.ReadObject(ms);
coachId = dccObj.id_user;
}
ne fait Méthode 2:
DccCoachApi coach = new JavaScriptSerializer().Deserialize<DccCoachApi>(streamRead);
coachId = coach.id_user;
ni ne méthode 3:
JavaScriptSerializer js = new JavaScriptSerializer();
DccCoachApi dccObj = js.Deserialize<DccCoachApi>(streamRead);
coachId = dccObj.id_user;
ni ne méthode 4:
dynamic dccObject = js.Deserialize<dynamic>(streamRead);
coachId = dccObject["id_user"];
L'erreur dure qui obtient produit quand je tire la valeur directement de la méthode 4 est: System.Collections.Generic.KeyNotFoundException: le La clé donnée n'était pas présente dans le dictionnaire. at System.Collections.Generic.Dictionary`2.get_Item (clé TKey)
Les méthodes 1-3 ne rencontrent pas d'erreur matérielle, mais elles remplissent coachId sans données. Est-ce que quelqu'un peut me faire savoir ce que je fais mal?
Avez-vous essayé d'ajouter '[DataMember]' à chaque propriété au lieu de seulement la première propriété? –
Votre dictionnaire JSON a trois clés: 'status',' data' et 'code'. Aucun n'apparaît dans votre classe 'DccCoachApi'. Cette classe semble être un type approprié pour le membre 'data'. – smarx
Copiez le fichier json dans le Presse-papiers et à partir de VS ** Menu Édition ** -> ** Collage spécial ** -> ** Coller JSON comme Classes ** – Plutonix