我一直在使用 Json.NET 将内存中的对象序列化为 json。 当我调用以下代码行时:
string json = JsonConvert.SerializeObject(template, Formatting.Indented);
System.IO.File.WriteAllText(file, json);
我在文本文件中得到以下内容:
{
"template": {
"title": "_platform",
"description": "Platform",
"queries": [
{
"query": "// *******************************n// -- Remove from DurationWindow at the end n// *******************************tn"
}
],
"metadata": ""
}
}
查询是我从数据库中提取的对象,具有字符串值。 当我使用 xml 并写入文件(使用 XDocument)时,字符串中的新行(以及 \t)被正确解析为文件中的制表符和新行。 json.Net 在这里是否有可能获得相同的效果?
换行符和制表符字符在 JSON 值中无效,JSON.net 实际上不会将 \t 和 呈现为制表符和换行符。 为了很好地显示它,您可以执行以下操作:
var withLineBreaks = json.Replace("\n", "n").Replace("\t", "t");
但是,如果这样做,则正在编写的文本将是无效的 JSON,如果要反序列化它,则必须在读回它时去除制表符和换行符。