.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
相关产品推荐
相关产品推荐

