In einigen Fällen habe ich NewtonSoft JSON.NET und in meinem Controller gebe ich einfach das Jobobjekt von meinem Controller zurück und alles ist gut.
Aber ich habe einen Fall, in dem ich etwas unformatiertes JSON von einem anderen Dienst bekomme und es von meiner WebAPI zurückgeben muss. In diesem Zusammenhang kann ich NewtonSOft nicht verwenden, aber wenn ich könnte, würde ich ein JOBJECT aus der Zeichenfolge erstellen (was wie unnötiger Verarbeitungsaufwand erscheint) und das zurückgeben, und alles wäre gut mit der Welt.
Ich möchte dies jedoch einfach zurückgeben, aber wenn ich die Zeichenfolge zurückgebe, erhält der Client einen JSON-Wrapper mit meinem Kontext als codierte Zeichenfolge.
Wie kann ich einen JSON explizit von meiner WebAPI-Controller-Methode zurückgeben?
quelle
HttpResponseMessage response
und dannStringContent
der.Content
Eigenschaft zuweisen . Es funktioniert nicht, wenn Sie den StringContent im Konstruktor zuweisen.Hier ist die Lösung von @ carlosfigueira, die für die Verwendung der mit WebApi2 eingeführten IHttpActionResult-Schnittstelle angepasst wurde:
quelle
Wenn Sie speziell nur diesen JSON zurückgeben möchten, ohne WebAPI-Funktionen zu verwenden (z. B. XML zulassen), können Sie jederzeit direkt in die Ausgabe schreiben. Angenommen, Sie hosten dies mit ASP.NET, haben Sie Zugriff auf das
Response
Objekt, sodass Sie es auf diese Weise als Zeichenfolge ausschreiben können. Dann müssen Sie nichts von Ihrer Methode zurückgeben - Sie haben das bereits geschrieben Antworttext zum Ausgabestream.quelle
Beispielbeispiel zum Zurückgeben von JSON-Daten von der Web-API-GET-Methode
quelle
diese funktionieren auch:
quelle