从响应流中获取JSON数据并将其作为字符串读取?

时间:2013-12-07 03:40:43

标签: c# json winforms httpwebresponse

我正在尝试从发送POST请求时收到的服务器读取响应。查看fiddler,它说这是一个JSON响应。如何使用C#Winforms将其解码为普通字符串,最好不使用外部API。如果您需要,我可以提供额外的代码/提琴手结果。

小提琴和乱语图片:

Gibberish JSON

我在下面的代码中尝试阅读流程时出现了乱码:

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

2 个答案:

答案 0 :(得分:16)

正如评论中所提到的,Newtonsoft.Json确实是一个很好的库,值得使用 - 非常轻量级。

如果您真的只想使用Microsoft的.NET库,还可以考虑使用System.Web.Script.Serialization.JavaScriptSerializer。

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

答案 1 :(得分:3)

假设(您还没有澄清)您需要实际解码流,因为A)检索远程文本流已被充分记录,并且B)您不能使用未解码的JSON流做任何事情。

您最好的行动方案是实施System.Web.Helpers.Json

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