在ASP.NET Core 2.0 Web Api中返回“raw”json

AFAIK在ASP.NET Core Web Api中返回数据的标准方法是使用IActionResult并提供例如OkObject结果。 这适用于对象,但如果我以某种方式获得了JSON字符串,我只想将该JSON返回给调用者?

例如

 public IActionResult GetSomeJSON() { return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }"); } 

ASP.NET Core在这里做的是,它接受JSON字符串,并再次将其包装到JSON中(例如,它转义为JSON)

使用[Produces("text/plain")]返回纯文本可以通过提供“RAW”内容来工作,但它也会将响应的内容类型设置为PLAIN而不是JSON。 我们在控制器上使用[Produces("application/json")]

如何在没有转义的情况下将JSON作为普通的JSON内容类型返回?

注意:获取JSON字符串无关紧要,它可能来自第三方服务,或者存在一些特殊的序列化需求,因此我们希望进行自定义序列化而不是使用默认的JSON.NET序列化程序。

当然在发布问题后几分钟我偶然发现了一个解决方案:)

只需返回Content类型为application/json Content

 return Content("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }", "application/json"); 

在您的操作中,将Ok()替换为Content()方法,该方法允许您设置响应的内容(原始内容),内容类型和状态代码: https : //docs.microsoft.com/en-us/ DOTNET / API / microsoft.aspnetcore.mvc.contentresult?视图= aspnetcore-2.0