Getting JSON data from a response stream and reading it as a string?

Chris Altig picture Chris Altig · Dec 7, 2013 · Viewed 71k times · Source

I am trying to read a response from a server that I receive when I send a POST request. Viewing fiddler, it says it is a JSON response. How do I decode it to a normal string using C# Winforms with preferably no outside APIs. I can provide additional code/fiddler results if you need them.

The fiddler and gibberish images:

GibberishJSON

The gibberish came from my attempts to read the stream in the code below:

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());

Answer

stames picture stames · Dec 7, 2013

As mentioned in the comments, Newtonsoft.Json is really a good library and worth using -- very lightweight.

If you really want to only use Microsoft's .NET libraries, also consider System.Web.Script.Serialization.JavaScriptSerializer.

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