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

C# WebClient发送POST时如何保留JSON中的\n字符而非换行

解决WebClient发送JSON时保留\n转义字符的问题

这个问题我之前也碰到过,核心是JSON的转义逻辑没处理对——你想要在最终输出里保留\n这个字符串,而不是让它被解析成实际的换行符,得从JSON构造的环节入手,给你几个可行的方案:

方案一:手动构造JSON时使用双重转义

如果你是直接拼接JSON字符串,要记住JSON里的\本身就是转义字符,所以想要最终的JSON里出现\n,你需要在代码里写\\n(也就是双重转义)。示例代码:

// 构造包含\\n的JSON字符串,发送后会被解析为\n
string jsonContent = "{\"content\": \"This is a Test\\n This is a Test2\"}";

using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/json";
    client.UploadString("你的目标接口地址", jsonContent);
}

这样发送出去的JSON内容里,\\n会被正确识别为\n字符串,而不是被转换成换行。

方案二:用JSON序列化库配置转义规则

如果你是通过对象序列化生成JSON(比如用Newtonsoft.Json),可以通过序列化配置来确保\n被保留。比如在对象的属性值里先写\\n,再搭配合适的序列化设置:

using Newtonsoft.Json;

// 定义数据对象
var payload = new 
{
    Content = "This is a Test\\n This is a Test2"
};

// 序列化时配置转义规则
string jsonContent = JsonConvert.SerializeObject(payload, new JsonSerializerSettings
{
    // 确保仅转义必要的字符,保留手动添加的转义序列
    StringEscapeHandling = StringEscapeHandling.Default
});

// 发送逻辑和方案一一致
using (var client = new WebClient())
{
    client.Headers[HttpRequestHeader.ContentType] = "application/json";
    client.UploadString("你的目标接口地址", jsonContent);
}

这样序列化后的JSON会保留\n字符串,而不是把它转换成实际换行。

关键原理说明

JSON语法中,\n是表示换行的转义序列;如果想要让接收方解析后得到的是\n这个文本,而不是换行,就需要在发送的JSON里把它写成\\n——这样JSON解析器会把\\识别为单个\,最终得到\n字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:50:14