【发布时间】:2014-11-19 06:33:34
【问题描述】:
(使用 Newtonsoft.Json 6.0.6)
鉴于此代码:
var folderNames = new List<string> { @"C:\Hello", @"C:\World" };
string json = JsonConvert.SerializeObject(folderNames);
Console.WriteLine(json);
这是序列化的 json 的样子(注意有 4 个反斜杠):
"[\"C:\\\\Hello",\"C:\\\\World\"]"
我得到这个控制台输出(例如未转义的 json):
["C:\\Hello","C:\\World"]
我不希望 extra 转义反斜杠出现在控制台输出中。
有什么建议?
(.NET Fiddle 上也有代码:https://dotnetfiddle.net/yHJvfu)
【问题讨论】:
-
json.Replace("\\","")? -
@CSharper, json.Replace(@"\\", @"\") 会起作用。如果你写这个作为答案,我可以给你信用。
-
@CSharper,谢谢,但我昨天已经读过那篇文章,但我不明白这对我有什么帮助。看看我帖子末尾的 .NET Fiddle 链接,看看会发生什么。您对替换的建议是我能想到的唯一可以恢复转义行为的方法。在我看来,JsonSerializer 应该已经知道反斜杠是 C# 中的转义字符,因此无需再次这样做。
-
根据 JSON 规范没有“额外的”反斜杠。为了使 JSON 有效,必须转义反斜杠。 (请参阅JSON.org。)您在小提琴中获得的输出正是我期望看到的。您是说要创建无效的 JSON 用于显示目的吗?