带引号的C#StringBuilder(forJSON)

Bre*_*ett 1 .net c# json

我已经构建了一个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("}");
Run Code Online (Sandbox Code Playgroud)

但是,命令: dataJSON.ToString();结果为字符串:

{  \"data\": {  \"urls\": [  {\"url\": \"domain/test1.html\"}  , {\"url\": \"domain/test2.html\"}  ]  }}
Run Code Online (Sandbox Code Playgroud)

注意转义的报价?这真的搞砸了我,因为服务器无法处理斜杠.

我想要的(当我使用PHP时,我的服务器发布的很好)应该是:

{  "data": {  "urls": [  {"url": "domain/test1.html"}  , {"url": "domain/test2.html"}  ]  }}
Run Code Online (Sandbox Code Playgroud)

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

非常感谢!布雷特

djd*_*d87 5

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

快速监视:

"{  \"data\": {  \"urls\": [  {\"url\": \"domain/path1\"}  ,{\"url\": 
    \"domain/path2\"}  ]  }}"
Run Code Online (Sandbox Code Playgroud)

Visualizer(实际输出):

{  "data": {  "urls": [  {"url": "domain/path1"}  ,{"url": "domain/path2"}  ]  }}
Run Code Online (Sandbox Code Playgroud)

\表示引号已被转义,并将包含在最终字符串中,正如您期望的那样.即你的输出没什么问题.

NB.我用的是"\""代替Convert.ToChar(34)我测试的时候.