【问题标题】:How to Remove Back Slashes from JSON Response in C#?如何从 C# 中的 JSON 响应中删除反斜杠?
【发布时间】:2013-01-17 15:03:03
【问题描述】:

我编写了一个网络服务,它将 TP-Open 服务的 XML 响应转换为 JSON 格式。我是 WCF 和编写 Webservice 的新手。 但是转换后的 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;
         }

如果您需要更多信息,请告诉我。

【问题讨论】:

  • result2 是你说的字符串吗?我猜 return result2.Replace(@"\", "");
  • 这只是从调试中复制/粘贴的吗?因为看起来反斜杠只是转义字符
  • @ofstream,我试过但结果没有变化。
  • 只要按原样对待 Json,它们正在转义 " 字符。
  • 你会在打印时看到反斜杠,但它会很好。

标签: c# json wcf web-services rest


【解决方案1】:

我认为您的 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!"}}

【讨论】:

  • 感谢示例。我将返回类型更改为流。它现在正在工作。
  • @Thiri 我知道这是一个老问题,但我似乎遇到了同样的问题。 “将返回类型更改为流”是什么意思?
【解决方案2】:

你确定你的字符串中有反斜杠吗?看起来他们是转义字符,因为您的字符串中有 " 字符。

【讨论】:

  • 是的。转换成 JSON 格式后有没有办法去掉这些反斜杠?
  • 如果它们只是转义字符,它们实际上并不在字符串中。这只是在字符串中嵌入特殊字符的 C# 方式。就像 \n 表示新行一样。您可以使用 File.WriteAllText() 将字符串写入磁盘并使用记事本查看实际存在的内容。
  • 非常感谢.. 说得通。
【解决方案3】:
str = JToken.Parse(your string).ToString();

【讨论】:

  • 请评论您的答案,否则可能会被建议删除。
  • 这也对我有用,不过可以通过一些上下文来完成。如果您以前没有听说过 JToken(我没有);它是 Newtonsoft.Json 库的一部分(您可以通过 Nuget 轻松安装)
【解决方案4】:

休息服务时间:System.Net.WebUtility.HtmlEncode(JsonString);

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

如果您的解码代码包含此字符串\\",请将\\ 替换为\

【讨论】:

    猜你喜欢
    • 2020-05-11
    • 2018-08-23
    • 2020-12-01
    • 2019-10-16
    • 2018-06-01
    • 2012-12-21
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多