简体   繁体   中英

Return “raw” json in ASP.NET Core 2.0 Web Api

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM