C# 序列化保留额外的反斜杠?
(使用Newtonsoft.Json 6.0.6) 鉴于此代码:C# 序列化保留额外的反斜杠?,c#,.net,json.net,.net-4.5,C#,.net,Json.net,.net 4.5,(使用Newtonsoft.Json 6.0.6) 鉴于此代码: var folderNames = new List<string> { @"C:\Hello", @"C:\World" }; string json = JsonConvert.SerializeObject(folderNames); Console.WriteLine(json); 我得到这个控制台输出(例如,unescaped json): 我不希望额外的转义反斜杠出现在控制台输出中建议是什么 (代码也可以
var folderNames = new List<string> { @"C:\Hello", @"C:\World" };
string json = JsonConvert.SerializeObject(folderNames);
Console.WriteLine(json);
我得到这个控制台输出(例如,unescaped json):
我不希望额外的转义反斜杠出现在控制台输出中建议是什么
(代码也可以在.NET Fiddle上找到:)Javascript正在以c的方式对斜杠进行转义是javascript中的转义字符。JSON是有效的
JSON。替换(\\”,“”)
?@CSharper,JSON.Replace(@“\\”,@“\”)可以工作。如果你写这篇文章作为一个答案,我可以给你信用。看看这篇文章@CSharper,谢谢,但我昨天已经读了那篇文章,我不知道这对我有什么帮助。看看我文章末尾的.NETFiddle链接,看看会发生什么。你的替换建议是我唯一能想到的恢复逃跑行为的方法。在我看来,JsonSerializer应该已经知道反斜杠在C#中是一个转义字符,所以没有必要再这样做。根据JSON规范,没有“额外”的反斜杠。反斜杠必须转义才能使JSON有效。(见)你在小提琴中得到的输出正是我期望看到的。你是说你想为显示目的创建无效的JSON吗?是的,我知道。那么,我该怎么做才能让Console.WriteLine输出我所期望的结果呢?
"[\"C:\\\\Hello",\"C:\\\\World\"]"
["C:\\Hello","C:\\World"]