72 votes

Renvoyer un fichier "brut" dans ASP.NET Core 2.0 Web Api

La manière standard autant que je sache, pour renvoyer les données dans ASP.NET Web de Base de l'Api est en utilisant IActionResult et fournissant par exemple un OkObject résultat. Cela fonctionne bien avec les objets, mais que si j'ai obtenu une chaîne JSON en quelque sorte, et je veux juste retour JSON à l'appelant?

par exemple

public IActionResult GetSomeJSON()
{
    return Ok("{ \"name\":\"John\", \"age\":31, \"city\":\"New York\" }");
}

Ce ASP.NET Core n'est ici, il faut que la Chaîne JSON, et l'enveloppe en JSON (par exemple il s'échappe de l'JSON)

Retour en texte brut avec [Produces("text/plain")] fonctionne en fournissant le "RAW" du contenu, mais il définit également le type de contenu de la réponse à la PLAINE au lieu de JSON. Nous utilisons [Produces("application/json")] sur nos Contrôleurs.

Comment puis-je retourner le JSON que j'ai comme un normal JSON type de contenu sans qu'il soit échappé?

Remarque: Il n'a pas d'importance comment la chaîne JSON a été acquis, il pourrait être de service 3ème partie, ou il existe des sérialisation besoins afin que nous voulons faire de la sérialisation personnalisée au lieu d'utiliser la valeur par défaut JSON.NET sérialiseur.

115voto

MichelZ Points 630

Et bien sûr, quelques minutes après avoir posté la question, je suis tombé sur une solution :)

Il suffit de renvoyer Content avec le type de contenu application/json ...

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

29voto

Arash Points 73

Dans votre action, remplacez Ok() par la méthode Content() , qui vous permet de définir le contenu (contenu brut), le type de contenu et le code d'état de votre réponse: https: // docs. microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.mvc.contentresult?view=aspnetcore-2.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X