【问题标题】:.NET - Line ends in serialization.NET - 行以序列化结束
【发布时间】:2021-10-20 18:37:33
【问题描述】:

是否可以独立于操作系统为序列化设置行尾格式(\r\n vs \n)?那么在 WIN 和 Linux 中命令的结果会是一样的吗?

我的意思是结果

System.Text.Json.JsonSerializer.Serialize(data, new JsonSerializerOptions {WriteIndented = true});

Newtonsoft.Json.JsonConvert.SerializeObject(data, Formatting.Indented);

将在两个系统中:

{\r\n "a": "b"\r\n .. }

非常感谢。 汤姆

【问题讨论】:

  • 这真的让我想知道你正在使用什么样的疯狂解析器,甚至关心的另一端?!
  • 我只有一个小工具,可以将一些数据序列化为 json。但有时我在 win 中运行该工具,有时在 ubuntu 中运行该工具;我需要比较结果。当行尾不同时,即使内容相同,结果也永远不会相同。
  • 听起来你需要一个更好的差异工具!我投票给 BeyondCompare。如果这是一个不经常运行的事情,Newtonsoft.Json.JsonConvert.SerializeObject(data, Formatting.Indented).Replace("\r\n","\n") 的幼稚方法可能就足够了

标签: c# asp.net-core .net-core


【解决方案1】:

没有内置,但您可以序列化到MemoryStream 而不是直接到文件,重新定位到流的开头,在其上打开StreamReader,然后逐行手动写入(从@读取987654323@) 到二进制模式打开的文件,输入你想要的任何行结尾。

如果你正确使用Span<> 切片而不是Substring,它实际上和原来的调用一样高效。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多