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

问题描述 投票:0回答:4
据我所知,在 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 序列化器。

c# json asp.net-mvc asp.net-core-mvc
4个回答
121
投票
当然,在发布问题几分钟后,我偶然发现了一个解决方案:)

只需返回

Content

 并指定内容类型 
application/json
...

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

30
投票
在您的操作中,将

Ok()

 替换为 
Content()
 方法,该方法可让您设置响应的内容(原始内容)、内容类型和状态代码:
https://learn.microsoft.com/en-我们/dotnet/api/microsoft.aspnetcore.mvc.contentresult?view=aspnetcore-2.0


5
投票
这对我有用,但

Json()

 没有:

return new JsonResult(json);
    

0
投票
这对我有用:

return Content(json, MediaTypeNames.Application.Json);
    
© www.soinside.com 2019 - 2024. All rights reserved.