2010-11-24 76 views
1

我想从Web服务器获取一些数据。当我通过浏览器去,我看到这样的回应:C#HTTP GET请求返回隐藏字符

[ { "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和\之前的\,还是我必须对响应做一些正则表达式/字符串操作?

谢谢, 威尔

回答

1

的“\”引号前简直是什么,你会在调试器看到和表示逃脱报价标记 - 没有问题,因为它仅用于显示目的,在执行字符串操作时不会作为字符出现。

'\ n'字符是一个换行符,实际上就是这样。如果你不希望它在字符串中,你可以用下面的删除:

responseFromServer = responseFromServer.Replace("\n", string.Empty); 
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
[ {\n\"x\": \"1\"\n,\"y\" : \"2\"\n,\"z\" : \"3\"\n\n}\n]\n" 

这串由您的IDE逃脱的表现,你会同时使用它在你的代码中 \ n表示换行符和\“如果转义引号,浏览器也收到相同的字符串,但它显示换行符为空格:)