[visual studio] problème json


#1

Bonjour,
je débute dans visual studio et j’ai donc créé mon premier package.
Dans l’ensemble tous marche bien sauf pour renvoyer un code json à constellation.

J’utilise le code suivant pour récupéré l’état de ma livebox :

sURL = PackageHost.GetSettingValue<string>("livaboxUrl") + cmd + cmdEtat;
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
var json = new WebClient().DownloadString(sURL);

Mais lorsque je retourne les données json à constellation :

PackageHost.PushStateObject("liveboxEtat", json);

Je me retrouve avec un code de type :

“{ “result”: { “responseCode”: “0”, “message”: “ok”, “data”: { “activeStandbyState”: “0”, “friendlyName”: “décodeur TV 4”, “macAddress”: “24:7F:20:C5:72:CB”, “osdContext”: “LIVE”, “playedMediaContextId”: “1”, “playedMediaId”: “80”, “playedMediaPosition”: “NA”, “playedMediaState”: “PLAY”, “playedMediaType”: “LIVE”, “timeShiftingState”: “0”, “wolSupport”: “0” } } }”

Merci par avance pour votre aide.


#2

Hello worganic,

La méthode “DownloadString” sur WebClient retourne une chaine de caratère (string). Donc si tu “PushStateObject” ta variable json tu aura une chaîne de caractère et non un objet JSON comme valeur de ton SO.

Pour publier un véritable objet, il faut, après avoir récupéré la réponse brute (string) de ton appel HTTP, désérialiser le JSON en objet avant de le pousser en SO sur Constellation.

Par exemple :

// GET HTTP
string strData = new WebClient().DownloadString(sURL);
// Deserialize to object
var json = Newtonsoft.Json.JsonConvert.DeserializeObject(strData);
// Push SO
PackageHost.PushStateObject("MonStateObject", json);

Apres pour aller plus loin, le mieux c’est de créer des objets au sens .NET (classes avec des propriétés) marquées de l’attribut [StateObject] qu’on utilisera pour dé sérialiser le flux JSON. Ca permet de décrire la structure de données des SO. Par exemple voir le code du package PushBullet : les objets sont dans le repertoire “Models”.


#3

Bonjour,
merci pour votre aide et votre travail,
cela marche impec.
Bon je regarderais d’un peu plus prêt cette histoire d’objets dés que tous fonctionnera.

Aller j’ai encore un peu de travail et tous serra ok pour mon IU.

Merci encpre