2013-02-02 87 views
5

我写了一个web服务,它将TP-Open Service的XML响应转换为JSON格式。我是WCF和编写Webservice的新手。 但是转换后的JSON格式如下所示。如何从C#中的JSON响应中删除反斜杠?

"{ \"data\": { \"current_condition\": [ {\"cloudcover\": \"25\", \"humidity\": \"48\", \"observation_time.. 

如何删除这些反斜杠\和我的代码到目前为止。

public string checkweather(string q, string num_of_day) 
    { 
     HttpWebRequest request=..; 
       ... 
     string Url = string.Format("http://free.worldweatheronline.com/feed/weather.ashx?q={0}&format={1}&num_of_days={2}&key={3}", q, format, num_of_days, key); 
     HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(Url); 
     Request.Method = "GET"; 

     using (HttpWebResponse response = (HttpWebResponse)Request.GetResponse()) 
     { 
      using (Stream stream = response.GetResponseStream()) 
      { 

       using (StreamReader reader = new StreamReader(stream)) 
       { 
        var result2=reader.ReadToEnd(); 
     }}} 
      return result2; 
     } 

如果您需要更多信息,请通知我。

+0

是RESULT2你正在谈论的字符串?我猜测返回result2.Replace(@“\”,“”); –

+2

这只是从调试复制/粘贴?因为它看起来像反斜杠只是逃避字符 – mihail

+0

@ofstream,我试过但没有改变结果。 – Thiri

回答

3

我认为你的JSON很好,反斜杠正在逃避引用,这是人们说的下面的代码显示了一些有效的XML - >的Json转换。(使用Json.NET)

const string xml = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"; 
XmlDocument node = new XmlDocument(); 
node.LoadXml(xml); 

string json = JsonConvert.SerializeXmlNode(node); 

如果在调试模式下查看,你会看到反斜杠,但输出是有效的JSON。

输出

{"note":{"to":"Tove","from":"Jani","heading":"Reminder","body":"Don't forget me this weekend!"}} 
+0

感谢您的示例示例,我将返回类型更改为流,它现在正在工作 – Thiri

+0

@Thiri我知道这是一个古老的问题,但我似乎有同样的问题。你是什么意思“改变返回类型为流”? – craftworkgames

3

你确定你的字符串中有反斜杠吗?它看起来像我,他们是转义字符,因为有“字符在你的字符串

+0

是的。是否有反正在删除这些反斜杠之后转换成JSON格式? – Thiri

+2

如果它们只是转义字符,它们并不是真的在字符串中,它只是C#在字符串中嵌入特殊字符的方式,就像\ n意味着一个新的行,您可以使用File.WriteAllText()将字符串写入磁盘并用记事本查看真正存在的内容 – Maurice

+0

非常感谢..有道理 – Thiri

0
str = JToken.Parse(your string).ToString(); 
+0

请评论你的答案,否则他们可能会被建议删除。 –

+0

这对我有效。 –

0

rest service time:System.Net.WebUtility.HtmlEncode(JsonString);

响应时间:System.Net.WebUtility.HtmlDecode(JsonString);

如果你的解码码包含此字符串\\"那么请更换\\\