web-dev-qa-db-fra.com

Obtenir des données JSON à partir d'un flux de réponse et les lire sous forme de chaîne?

J'essaie de lire une réponse d'un serveur que je reçois lorsque j'envoie une demande POST. Visualisant le violoniste, il dit que c'est une réponse JSON. Comment puis-je la décoder en une chaîne normale en utilisant Winforms C # avec de préférence aucune API externe. Je peux fournir des résultats supplémentaires de code/violon si vous en avez besoin.

Les images du violoneux et du charabia:

GibberishJSON

Le charabia est venu de mes tentatives de lecture du flux dans le code ci-dessous:

Stream sw = requirejs.GetRequestStream(); 
sw.Write(logBytes, 0, logBytes.Length); 
sw.Close(); 
response = (HttpWebResponse)requirejs.GetResponse();
Stream stream = response.GetResponseStream(); 
StreamReader sr = new StreamReader(stream); 
MessageBox.Show(sr.ReadToEnd());
7
Chris Altig

Comme mentionné dans les commentaires, Newtonsoft.Json est vraiment une bonne bibliothèque et mérite d'être utilisé - très léger.

Si vous voulez vraiment utiliser uniquement les bibliothèques .NET de Microsoft, pensez également à System.Web.Script.Serialization.JavaScriptSerializer.

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObject = serializer.DeserializeObject(sr.ReadToEnd());
16
stames

Supposons (vous n'avez pas encore clarifié) que vous devez réellement décoder le flux, car A) récupérer un flux de texte distant est bien documenté , et B) vous ne pouvez pas faire grand chose avec un flux JSON non décodé.

Votre meilleure solution consiste à mettre en œuvre System.Web.Helpers.Json :

using System.Web.Helpers.Json
...
var jsonObj = Json.Decode(jsonStream);
3
brandonscript