在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