带引号的C#StringBuilder(forJSON)

我已经构建了一个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#中获取字符串以包含将产生所需字符串的引号?

非常感谢! 布雷特

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

快速监视:

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

Visualizer(实际输出):

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

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

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

你可能有更多的运气使用Newtonsoft.JSON库 ,或者只是在你的字符串文字而不是使用Char(34)中将你自己的斜线转义为\“。

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