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

C# 使用Newtonsoft JSON将JSON中\n转义为\\n的实现方案咨询

方案1:序列化阶段通过自定义转换器自动处理(推荐)

Newtonsoft.Json 支持自定义 JsonConverter 修改字段序列化逻辑,你可以注册字符串专属转换器,自动对所有字符串值中的换行符做二次转义,无需手动处理每个字段:

using Newtonsoft.Json;
using System;

public class EscapeNewLineConverter : JsonConverter<string>
{
    public override void WriteJson(JsonWriter writer, string value, JsonSerializer serializer)
    {
        // 将字符串内的换行符转义为字面量 \n
        string processedValue = value.Replace("\n", "\\n");
        // 如果需要同时处理回车符可以追加 .Replace("\r", "\\r")
        writer.WriteValue(processedValue);
    }

    public override string ReadJson(JsonReader reader, Type objectType, string existingValue, bool hasExistingValue, JsonSerializer serializer)
    {
        // 反序列化时如果需要还原原始换行,可在此处做反向替换,不需要直接返回原值即可
        return reader.Value?.ToString()?.Replace("\\n", "\n") ?? string.Empty;
    }
}

序列化时直接传入转换器即可:

// 业务实体类示例
public class ConfigItem
{
    public string Name { get; set; }
    public string Value { get; set; }
}

// 序列化调用代码
var config = new ConfigItem
{
    Name = "KeyName",
    Value = "你的XML业务内容"
};
string finalJson = JsonConvert.SerializeObject(config, new JsonSerializerSettings
{
    Converters = { new EscapeNewLineConverter() }
});

方案2:序列化完成后全局替换JSON字符串

如果是临时场景不想新增转换器类,也可以直接对序列化输出的原始JSON做全局替换,实现更简便:

string rawJson = JsonConvert.SerializeObject(config);
// 原始JSON中的换行符存储为 \n,替换后变为 \\n
string finalJson = rawJson.Replace("\\n", "\\\\n");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:24:00