我正在尝试从Web服务器获取一些数据。当我通过浏览器访问时,我看到了如下响应:
[ { "x": "1" ,"y" : "2" ,"z" : "3" } ]
当我发送GET请求时,结果会回来:
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n"
我使用的代码基本上是:
// Create a request for the URL.
WebRequest request = WebRequest.Create(fullUrl);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Get the stream containing content returned by the server.
Stream dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
是否有一种简单的方法可以摆脱\ n和\之前的\,或者我必须对响应做一些正则表达式/字符串操作吗?
谢谢, 将
答案 0 :(得分:3)
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n"
可能是您在Visual Studio调试器中看到的。你不需要摆脱任何东西。您也可以稍微简化一下代码,因为样本中所有未处理的资源都可能泄漏非托管句柄:
using (var client = new WebClient())
{
string responseFromServer = client.DownloadString(fullUrl);
}
答案 1 :(得分:1)
引号之前的'\'就是您将在调试器中看到的并表示转义的引号 - 没问题,因为它仅用于显示目的,并且在执行字符串操作时不会作为字符出现。 / p>
'\ n'字符是一个换行符,实际上就是这里。如果您不想在字符串中使用它,可以使用以下内容将其删除:
responseFromServer = responseFromServer.Replace("\n", string.Empty);
答案 2 :(得分:1)
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n"
这是您的IDE转义字符串的呈现方式,就像您在代码中使用它一样 \ n表示换行符和\“如果转义引号,浏览器也会收到相同的字符串,但它会将换行符显示为空格:)