De retour de “raw” en json ASP.NET Core 2.0 de l'Api Web
Façon 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.
JSON envoyé en tant que valeur de retour (corps), donc pas de paramètres impliqués.
OriginalL'auteur MichelZ | 2018-01-19
Vous devez vous connecter pour publier un commentaire.
Et, bien sûr, quelques minutes après la publication de la question, je tombe sur une solution 🙂
Juste retour
Content
avec le type de contenuapplication/json
...Cela a été extrêmement utile, merci de vous! (Si j'retour Json que par le commentaire ci-dessus, puis il la retourne chunked qui mon client ne peut pas utiliser.) Votre solution de renvoi de Contenu avec un cahier des charges de l'application/json est ce qui a résolu mon problème.
Comment faire pour DotNetCore 2.1 ? Le "Contenu" de la méthode n'est pas reconnue - donc, je crois qu'ils ont changé quelque chose depuis.
Vous avez besoin ASPNetCore 2.1. NetCore2.1 n'est pas assez.
Content
est une fonction deMicrosoft.AspNetCore.Mvc.ControllerBase
OriginalL'auteur MichelZ
Dans votre action, remplacer
Ok()
avec leContent()
méthode 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.0un autre jour de se tirer les cheveux. Serais ravi de voir une solution de travail pour DNCore 2.1!
Vous avez besoin ASPNetCore 2.1. NetCore2.1 n'est pas assez.
Content
est une fonction deMicrosoft.AspNetCore.Mvc.ControllerBase
OriginalL'auteur Arash Motamedi