2013-01-09 63 views
1

我知道这已经被大量的时间覆盖,但我仍然有一个问题,所有的解决方案。转义字符串中的双引号在c#

我需要构建一个字符串发送到需要引号的JSON解析器。我已经试过这些形式:

string t1 = "[{\"TS\"}]"; 
string t2 = "[{" + "\"" + "TS" + "\"" + "}]"; 
string t3 = @"[{""TS""}]"; 
Debug.Print(t1); 
Debug.Print(t1); 
Debug.Print(t1); 

调试语句中正确显示它[{“TS”}],但是当我看它在调试器中,最重要的,当我的字符串发送到我的服务器端JSON解析器是否有转义字符: “[{\”TS \“}]”

如何摆脱实际字符串中的转义字符?

+0

你的代码示例是否错误?你的'Debug.Print'语句全部使用t1。 –

+1

顺便说一句,这是无效的JSON。 – SLaks

+0

您确定您的JSON解析器中没有错误吗?在所有三种情况下你的代码看起来都很好 – Mir

回答

3

调试语句中正确显示它[{“TS”}],但是当我在调试器看它 ,最重要的,当我的字符串发送到我的 服务器端JSON解析器是在转义字符它: “[{\” TS \“}]”

但从调试角度,它会永远显示转义版本(这是使你作为开发人员,知道该字符串值是什么)。这不是一个错误。当你将它发送给另一个.Net系统时,它将从调试器的角度再次显示转义版本。如果你输出这个值(Response.Write()或Console.WriteLine()),你会看到你期望的版本会在那里。

如果突出显示变量(从调试器中)并选择放大镜图标旁边的下拉列表并选择“Text Visualizer”,您将看到它如何以纯文本形式显示。这可能是你正在寻找的。

根据你的意见,我想建议你也看看你如何将字符串转换为字节。你想确保你的字节编码格式可以被其他机器理解。请确保您使用的命令如下转换您的字符串转换成字节:

System.Text.Encoding.ASCII.GetBytes(mystring); 

我有偷渡怀疑您要发送的字符串本身,而不是编码版本的比特表示。

+0

问题是在服务器端(Linux)接收到带有转义字符的字符串并且不理解它 – scoleman2272

+0

然后,要么是您没有正确检查服务器端的字符串,要么是您的问题在于字符串被发送(没有显示),因为这里的代码很好。 – Servy

+0

然后我们需要更多的细节。我们需要知道linux机器如何使用您的数据。你迄今向我们展示的内容并不正确。 –

相关问题