【问题标题】:C# StringBuilder with Quotes (forJSON)带引号的 C# StringBuilder (forJSON)
【发布时间】:2010-12-07 16:51:51
【问题描述】:

我已经构建了一个 JSON 字符串(要发布到 Web 服务),并且我使用 C# StringBuilder 类来执行此操作。问题是,当我插入引号时,StringBuilder 类会转义它们。

我目前正在构建 JSON 字符串:

StringBuilder dataJSON= new StringBuilder();
dataJSON.Append("{");
dataJSON.Append("  " + Convert.ToChar(34) + "data" + Convert.ToChar(34) + ": {");
dataJSON.Append("  " + Convert.ToChar(34) + "urls" + Convert.ToChar(34) + ": [");
dataJSON.Append("  {" + Convert.ToChar(34) + "url" + Convert.ToChar(34) + ": " + Convert.ToChar(34) + domain + "/" + path[0] + Convert.ToChar(34) + "}");
dataJSON.Append("  ,{" + Convert.ToChar(34) + "url" + Convert.ToChar(34) + ": " + Convert.ToChar(34) + domain + "/" + path[1] + Convert.ToChar(34) + "}");
dataJSON.Append("  ]");
dataJSON.Append("  }");
dataJSON.Append("}");

但是,命令: dataJSON.ToString(); 得到字符串:

{  \"data\": {  \"urls\": [  {\"url\": \"domain/test1.html\"}  , {\"url\": \"domain/test2.html\"}  ]  }}

注意到转义的引号了吗?这真的把我搞砸了,因为服务器无法处理斜线。

我想要的(当我使用 PHP 时它可以很好地发布到我的服务器)应该是:

{  "data": {  "urls": [  {"url": "domain/test1.html"}  , {"url": "domain/test2.html"}  ]  }}

是否有任何方法可以在 C# 中获取包含引号的字符串,从而生成所需的字符串?

非常感谢! 布雷特

【问题讨论】:

  • 你在哪里看到的?在调试器中?
  • 是的,在中间窗口中。这可能是问题吗?中间窗口会添加斜线吗?
  • 这不是真正返回的内容
  • “中间窗口会添加斜线吗?”。是的,这正是正在发生的事情。为该值添加一个监视,并使用文本查看器查看,您将看到字符串中的实际内容,没有转义。
  • 为什么是Convert.ToChar(32)\" 有什么问题? IE。 " \"data\": {".

标签: c# .net json


【解决方案1】:

QuickWatch/Watch 窗口将添加额外的 \。如果您在 Text Visualizer 中查看它,您将看不到它们:

快速观看:

"{  \"data\": {  \"urls\": [  {\"url\": \"domain/path1\"}  ,{\"url\": 
    \"domain/path2\"}  ]  }}"

Visualizer(实际输出):

{  "data": {  "urls": [  {"url": "domain/path1"}  ,{"url": "domain/path2"}  ]  }}

\ 表示引号已被转义,并将按照您的预期包含在最终字符串中。 IE。您的输出没有问题

注意。我在测试时使用了"\"" 而不是Convert.ToChar(34)

【讨论】:

    【解决方案2】:

    使用Newtonsoft.JSON library 可能会更幸运,或者在字符串文字中将斜杠自己转义为 \" 而不是使用 Char(34)。

    dataJSON.Append(" \"data\": {");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 2017-08-21
      相关资源
      最近更新 更多