2016-12-24 7 views
0

Ich habe WebAPI für mobile entwickelt, die JSON zurückgeben sollte, und es ist gut, JSON zurückzugeben, aber JSON kommt unter XML.Webapi gibt JSON in Zeichenfolge XML zurück

Unten ist mein Code und Screenshot.

"Ergebnis" ist meine Antwortklasse, in der ich Daten fülle. Ich habe versucht mit JavaScriptSerializer und JsonConvert von Newsoft, aber gescheitert.

Json returned in XML

Wie kann ich es in JSON mit einfachen String arbeiten?

+0

Versuchen Sie die Einstellung 'Response.ContentType = "application/json"; '[MSDN Referenz] (https://msdn.microsoft.com/en-us/library/ms525208%28v=vs.90%29.aspx? f = 255 & MSPPError = -2147217396) und [application/json] (http://www.iana.org/assignments/media-types/application/json) und [RFC 7159] (https://tools.ietf.org/ html/rfc7159) –

+0

Danke, aber wo muss ich das tun? –

+0

Sie müssen dies tun, bevor Daten vom Server auf dem Server gesendet werden. Was ziemlich Standard scheint, ist Code hinzuzufügen, um ein neues get-Flag zu akzeptieren, um das Format zu bestimmen. Wenn das Flag nicht gesetzt ist, rendern Sie es als das, was Sie als Standard wählen. zB 'https: //example.com/api/foo? type = json' –

Antwort

1

Da Sie Ihre einzige Methode Rückgabetyp zu Json konvertiert haben und nicht die gesamten Daten (Antwortdaten) zu Json-Format. Um ganze Antwortdaten an Json zurückzugeben, fügen Sie der Klasse WebApiConfig.cs folgende Syntax hinzu.

config.Formatters.Remove(config.Formatters.XmlFormatter); 

Da Web Api alle Antwortdaten standardmäßig an XML sendet. Sie müssen also den Standard XMLFormatter aus der Klasse WebApiConfig.cs entfernen. Zum besseren Verständnis von MediaTypeFormatters werfen Sie bitte einen Blick auf dieses Video-Tutorial.

https://www.youtube.com/watch?v=tNzgXjqqIjI&list=PL6n9fhu94yhW7yoUOGNOfHurUE6bpOO2b&index=6

UPDATE

Dont Objekt in Methode serialisieren. Entfernen Sie JsonConvert.SerializeObject() und geben Sie Ihr Objekt zurück. Fügen Sie einfach die obige Syntax in der WebAppconfig.cs-Datei hinzu.

+0

Dies ist nicht die Antwort. Das OP gibt eine ** Zeichenkette ** von ihrer Methode zurück. Wenn das OP dies hinzufügt, antwortet ihre API mit JSON ... aber der JSON selbst ** ist eine Zeichenkette **. Anstatt "{" foo ":" bar "}' lautet die Antwort dann "{{foo \": \ "bar \"} "'. – CodeCaster

+0

er muss dieses JsonConvert.SerializeObject vom Rückgabetyp entfernen. – Rajput

+0

Hallo Rajput, vielen Dank für die Antwort - Ich habe das gleiche wie nach meinem Kommentar angewendet, aber angewendet json Formatierung mit HttpwebRequest. –

Verwandte Themen