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
...
return Content("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }", "application/json");
Json()
没有:
return new JsonResult(json);
return Content(json, MediaTypeNames.Application.Json);