我有一些来自第三方系统的JSON,其中包含值中的反斜杠。例如:
string extract = @"{""key"": ""\/Date(2015-02-02)\/""}";
不经过 C# 字符串转义的对应字符串为:
{"key": "\/Date(2015-02-02)\/"}
我希望能够对这个JSON格式化(如缩进)。
通常,为了格式化,我会使用类似JsonConvert的工具,例如:
JsonConvert.SerializeObject(JsonConvert.DeserializeObject(extract), Formatting.Indented)
这种方法不太可行,因为它将该值视为日期,但由于它不符合标准的 MS 格式 \/Date(ticks)\/
,所以它会被视为 1970 年 1 月 1 日的日期:
{
"key": "1970-01-01T00:00:02.015+00:00"
}
下一种方法是使用序列化器设置来不转换日期(我不介意它是否将字段识别为日期,尽管后面可能会很方便):
JsonSerializerSettings settings = new JsonSerializerSettings
{
DateParseHandling = DateParseHandling.None,
};
JsonConvert.SerializeObject(JsonConvert.DeserializeObject(extract, settings), Formatting.Indented);
在反序列化过程中,似乎将反斜杠视为转义字符,因此一旦查看最终结果,它就会"丢失":
{
"key": "/Date(2015-02-02)/"
}
有没有一种在C#中格式化JSON的方法(无论是使用JsonConvert还是其他方式),可以保留值中的反斜杠?
请注意,我处理的实际JSON(a)相当大,但如果真的必要,不太大也不会使用一些regex/find-replace解决方案,(b)不受我的控制,所以我无法更改格式。 我确信答案已经在StackOverflow上了,但是我发现很难找到正确的搜索词...