The standard way AFAIK to return data in ASP.NET Core Web Api is by using IActionResult
and providing eg an OkObject
result. This works fine with objects, but what if I have obtained a JSON string somehow, and I just want to return that JSON back to the caller?
eg
public IActionResult GetSomeJSON()
{
return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }");
}
What ASP.NET Core does here is, it takes the JSON String, and wraps it into JSON again (eg it escapes the JSON)
Returning plain text with [Produces("text/plain")]
does work by providing the "RAW" content, but it also sets the content-type of the response to PLAIN instead of JSON. We use [Produces("application/json")]
on our Controllers.
How can I return the JSON that I have as a normal JSON content-type without it being escaped?
Note: It doesn't matter how the JSON string was aquired, it could be from a 3rd party service, or there are some special serialization needs so that we want to do custom serialization instead of using the default JSON.NET serializer.
And of course a few minutes after posting the question I stumble upon a solution :)
Just return Content
with the content type application/json
...
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?view=aspnetcore-2.0
这对我Json()
,而Json()
没有:
return new JsonResult(json);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.