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

.NET Core 7 WebApi Action Filter为何给字符串添加额外引号?

解决返回结果被额外添加引号的问题

问题出在你用ObjectResult包装了字符串值——JSON序列化器会自动为字符串类型的JSON值添加引号,所以最终返回的结果就会出现额外的一层引号。

要解决这个问题,直接改用ContentResult替代ObjectResult即可,它会直接返回纯文本内容,不会触发JSON序列化:

public void OnActionExecuted(ActionExecutedContext context)
{
    if (context.Exception is ArgumentNullException
        or ValidationException
        or DbUpdateException
        or GuardsServiceValueShouldNotBeEqualToException)
    {
        context.Result = new ContentResult()
        {
            Content = SourceFormatsServiceResultStatuses.ValidationError,
            StatusCode = (int)HttpStatusCode.BadRequest,
            ContentType = "text/plain" // 可选,明确指定返回纯文本类型
        };
        context.ExceptionHandled = true;
    }
}

如果你的场景需要返回JSON格式(而非纯文本),但不想出现双层引号,可以把字符串包装成对象属性返回,比如:

context.Result = new ObjectResult(new { Message = SourceFormatsServiceResultStatuses.ValidationError })
{
    StatusCode = (int)HttpStatusCode.BadRequest
};

这种方式返回的是标准JSON对象,结构为{"Message":"Validation Error"},不会出现多余的引号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:55:13