4 votes

Xamarin PCL C# - Désérialiser une chaîne de caractères vers un JSONObject/JSONArray

J'ai beaucoup travaillé avec Android mais aujourd'hui je dois travailler avec Xamarin. Je suis en train de créer une classe PCL et j'essaie de créer un objet JSON à partir d'une chaîne ( HttpWebResponse converti en chaîne) pour l'appeler depuis un wrapper Android.

Après quelques recherches, je n'ai rien trouvé qui réponde vraiment à ma question.

En fin de compte, je veux être capable d'appeler quelque chose comme ça :

string value = jsonObject.get("key").getAsString();

Je reçois une chaîne de caractères de la réponse http et je veux la convertir en un objet JSON. Lorsque l'objet JSON est créé, je veux extraire une valeur comme dans l'exemple. Cependant, je le fais dans un PCL. Est-il possible de faire cela dans Xamarin/C# à partir d'un PCL ?

Merci pour l'aide et la lecture !

5voto

Giorgi Points 15760

Vous pouvez désérialiser la chaîne en un objet en utilisant Newtonsoft.Json bibliothèque :

Account account = JsonConvert.DeserializeObject<Account>(jsonFromServer);

Vous pouvez également utiliser HttpClient au lieu de la classe HttpWebRequest et désérialise automatiquement la réponse dans votre objet :

var client = new HttpClient();
var response = await client.GetAsync("/accounts");

Account account = await response.Content.ReadAsAsync<Account>();

Si votre serveur renvoie un code d'état différent lorsqu'une erreur se produit, vous pouvez utiliser la fonction HttpResponseMessage.IsSuccessStatusCode pour décider dans quel type désérialiser la réponse. Sinon, vous pouvez utiliser var jsonObject = JObject.Parse(jsonText); et accéder aux propriétés comme ceci : jsonObject["someKey"]

Vous aurez besoin de Microsoft.AspNet.WebApi.Client bibliothèque de Nuget

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X