C# 从响应流获取JSON数据并将其作为字符串读取?
我试图从服务器读取一个响应,当我发送POST请求时收到该响应。查看fiddler时,它表示这是一个JSON响应。如何使用C#Winforms将其解码为普通字符串,最好不要使用外部API。如果您需要,我可以提供其他代码/fiddler结果 小提琴手和胡言乱语的形象: 这种胡言乱语来自于我试图读取以下代码中的流:C# 从响应流获取JSON数据并将其作为字符串读取?,c#,json,winforms,httpwebresponse,C#,Json,Winforms,Httpwebresponse,我试图从服务器读取一个响应,当我发送POST请求时收到该响应。查看fiddler时,它表示这是一个JSON响应。如何使用C#Winforms将其解码为普通字符串,最好不要使用外部API。如果您需要,我可以提供其他代码/fiddler结果 小提琴手和胡言乱语的形象: 这种胡言乱语来自于我试图读取以下代码中的流: Stream sw = requirejs.GetRequestStream(); sw.Write(logBytes, 0, logBytes.Length); sw.Close(
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());
假设(您还没有澄清)您需要实际解码流,因为A)检索远程文本流是有很好的文档记录的,B)对于未解码的JSON流,您不能做很多事情
您的最佳行动方案是实施:
正如评论中提到的,Newtonsoft.Json确实是一个很好的库,值得使用——非常轻量级
如果您真的只想使用微软的.NET库,也可以考虑Syr.Web.Script。序列化。JavaScriptSerializer。
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObject = serializer.DeserializeObject(sr.ReadToEnd());
“最好没有外部API。”使用外部API,如Newtonsoft.Json(也称为Json.NET)。您需要将其作为字符串显示,还是需要利用其中包含的数据(意味着您需要它作为数组/列表提供)?@SteveWellens-OP希望将响应作为字符串读取,而实际上不需要外部API。解析可能需要JSON.Net。。。代码看起来很合理。显然,创作缺失,OP可能需要阅读哪一个才是输出的原因。@AlexeiLevenkov-感谢您重申OP的愿望。我想他会发现,尝试从JSON字符串创建对象是一项艰巨的工作,使用第三方库是一种可以接受的方式。我当时正推着他朝着他可能要去的方向走。我需要它作为一根线,这样我就可以把它作为一个标题发送。如何找到System.Web.Helpers:谢谢!HTTPS连接中的HTTPWebRequest是否阻止对其进行反序列化?因为登录是HTTPS连接,我知道JSON是有效的,但是当我尝试反序列化它时,它没有成功,说“无效的JSON原语”。我在这里遗漏了什么吗?我从来没有在解码HTTPS连接的响应时遇到过问题。解码失败的原始文本是什么?
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonObject = serializer.DeserializeObject(sr.ReadToEnd());