我已经构建了一个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#中获取字符串以包含引号,从而产生所需的字符串?
非常感谢!
布雷特
最佳答案
“快速监视/监视”窗口将在其中添加额外的\
。如果在“文本可视化器”中查看它,则不会看到它们:
快速观察:
"{ \"data\": { \"urls\": [ {\"url\": \"domain/path1\"} ,{\"url\":
\"domain/path2\"} ] }}"
可视化器(实际输出):
{ "data": { "urls": [ {"url": "domain/path1"} ,{"url": "domain/path2"} ] }}
\
表示引号已转义,并将按您期望的那样包含在最终字符串中。即您的输出没有任何问题。注意测试时,我使用的是
"\""
而不是Convert.ToChar(34)
。
关于c# - 带引号的C#StringBuilder(forJSON),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4379262/