从包含\“的文件中读取文本,但在代码中将其保留为\\\”

时间:2013-01-31 03:02:15

标签: c# string escaping

我有一个包含如下所示数据的文本文件:

{\"_clientId\":\"123\",\"_timestamp\":22548} {\"_clientId\":\"222\",\"_timestamp\":22590}

(他们已经有转义字符)

当我使用时读取文件 例如string[] lines = System.IO.File.ReadAllLines(@"datafile.txt");,它将字符串存储在lines中:

"{\\\"_clientId\\\":\\\"123\\\",\\\"_timestamp\\\":22548}" "{\\\"_clientId\":\\\"222\\\",\\\"_timestamp\\\":22590}"

我的问题是:有没有办法将它们存储在字符串变量中,而没有额外的转义字符(将它们存储在文件中)?

2 个答案:

答案 0 :(得分:5)

这些行应该与string[]中的行完全一样存储在文件中。

如果查看调试器中的行,调试器将仅显示转义以用于可视化目的。这可能就是你所看到的。

编辑:

详细查看您的示例后,问题是您已经转义了数据文件中的引号。数据文件本身不包含有效的Json。

这应解决问题:

string fixedLine = line.Replace("\\\"", "\"");

然后反序列化fixedLine

答案 1 :(得分:0)

您需要使用某些反序列化器反序列化该文件。有许多可用,您可以使用JSON.NETServicestack.Text. Servicestack的序列化器和解串器是在地球上最快的。使用其中一个,您可以获取没有转义字符的JSON数据,并可以存储它或传递给方法。