You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET序列化能否独立设置行尾格式实现跨操作系统输出一致

针对C# JSON序列化统一行尾符为\r\n的解决方案

可以独立于操作系统自定义序列化的行尾格式,针对你提到的两个常用JSON库的实现方式如下:

System.Text.Json 实现方案

.NET 5及以上版本的System.Text.Json原生支持自定义换行符,直接配置JsonSerializerOptions的NewLine属性即可:

var options = new JsonSerializerOptions
{
    WriteIndented = true,
    NewLine = "\r\n" // 强制使用CRLF风格换行符
};
string json = System.Text.Json.JsonSerializer.Serialize(data, options);

如果是.NET 5以下的版本,没有原生的NewLine配置项,可以序列化完成后统一替换换行符:

string json = System.Text.Json.JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = true });
// 先统一转为LF再替换为CRLF,避免重复替换
json = json.Replace("\r\n", "\n").Replace("\n", "\r\n");

Newtonsoft.Json (Json.NET) 实现方案

通过自定义JsonTextWriter的换行属性即可实现,不需要修改全局配置:

using var stringWriter = new StringWriter();
using var jsonWriter = new JsonTextWriter(stringWriter)
{
    Formatting = Formatting.Indented,
    NewLineChars = "\r\n" // 强制指定换行符为CRLF
};
JsonSerializer.CreateDefault().Serialize(jsonWriter, data);
string json = stringWriter.ToString();

你可以将上述逻辑封装为静态工具方法,和原生JsonConvert.SerializeObject的使用体验完全一致。


内容的提问来源于stack exchange,提问作者kktHlv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:24:05