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

ASP.NET Web API返回JSON时如何保留单个反斜杠?

解决ASP.NET Web API JSON响应中保留单个反斜杠的问题

问题根源

你当前代码里的\'是C#的单引号转义符,并非反斜杠字符——这就是响应里看不到反斜杠的核心原因。要在JSON里输出单个反斜杠,得先在C#字符串中正确表示反斜杠,再配合序列化器配置确保不被额外转义。

正确写法与配置方案

1. 修正C#字符串赋值

要在C#字符串中表示一个实际的反斜杠字符,有两种写法:

  • 用双反斜杠转义:
    Scenario = "{The following special characters are not supported.[ '/', '#', '?', ',', '\\']}";
    
  • 用逐字字符串(@前缀),直接写单个反斜杠即可:
    Scenario = @"{The following special characters are not supported.[ '/', '#', '?', ',', '\']}";
    

2. 适配ASP.NET Web API序列化器配置

针对Newtonsoft.Json(传统ASP.NET Web API默认)

默认情况下,Newtonsoft.Json会把C#中的单个反斜杠序列化为JSON里的单个反斜杠,但如果项目有特殊配置导致额外转义,可在WebApiConfig.cs中修改配置:

config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings
{
    StringEscapeHandling = StringEscapeHandling.Default
};

StringEscapeHandling.Default会按JSON规范处理转义,不会额外转义反斜杠。

针对System.Text.Json(ASP.NET Core默认)

默认配置下该序列化器会正确处理反斜杠,若出现异常转义,可在Program.cs中调整:

builder.Services.AddControllers()
    .AddJsonOptions(options =>
    {
        options.JsonSerializerOptions.EscapeHandling = JsonEscapeHandling.Default;
    });

避免开启过度转义的选项。

3. 验证序列化结果

你可以手动序列化测试,确认字符串是否正确:

var scenario = "{The following special characters are not supported.[ '/', '#', '?', ',', '\\']}";
var json = JsonConvert.SerializeObject(scenario);
// 输出应为:"{The following special characters are not supported.[ '/', '#', '?', ',', '\']}"

为什么之前的尝试无效?

  • 用JsonConvert.SerializeObject无效,是因为原始字符串里根本没有反斜杠(\'是转义单引号,不是反斜杠字符);
  • Regex.Unescape用于处理正则转义,此处不需要,反而会破坏正确字符串;
  • 控制台程序中@字符串显示正常但ASP.NET中异常,大概率是序列化器配置差异导致,调整配置即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 09:37:36