Frage

Meine HTTP-Anforderung enthält eine gültige JSON-Zeichenfolge mit dem doppelten Zitat in der Mitte des Namens "Jo \" HN ", so wie hier gesehen (erfasst von Fiddler Web Debugger) generasacodicetagpre.

HINWEIS: Der Anforderungs-Einreichungsprozess verwendet den Standard-JQuery $.ajax(..)-Anruf in diesem Artikel in diesem Artikel ohne Probleme gesehen.


serverseitige Ausgabe

Meine C # ASMX-Web-Service-Methode empfängt den folgenden C # -Sch-String-Wert, der das mittlere Doppelzitat nicht miteinander aufweist (d. H. Backslash wurde entfernt). Dies kann nicht nacherialisiert werden, ohne den Fehler unten zu verursachen.

Hier kommt der Disjoint im Prozess vor, bevor ich den Wert in meine Webmethode erhalte. Es ist, als ob ASP.NET die Saite intern verarbeitet, indem Sie ihn nicht aufheben und mit keinem Escapes wieder mitnehmen, um den ursprünglichen Wert zu ändern, anstatt den Parameter des Web-Method-Verfahrens ein Verbatim bereitzustellen.

c # string ist: generasacodicetagpre.

Die ASMX-Webmethode ist ungefähr: generasacodicetagpre.

Die Ausnahmebotschaft ist verständlicherweise:

{"Ungültiges Objekt eingeleitet, ':' oder '}' 'erwartet. (423): [{\ "Name \": \ "SPS $ LT $ ZONEHEEDOPNAV $ SEARCHBOXTOPNAV $ TXTWORD \", \ "Wert \": \ "\"}, {\ "Name \": \ "salutation \", \ "Wert \ ": \" Mr \ "}, {\" Name \ ": \" Vorname \ ", \" Wert \ ": \" joh \ "n \"}, {\ "Name \": \ "LastName \ ", \" Wert \ ": \" Smith \ "}, {\" Name \ ": \" Initial \ ", \" Wert \ ": \" d \ "}]"}

Wie löste ich mich am besten, dieses Problem zu lösen, ohne sich von klassischen ASMX-Webdiensten zu wechseln?

Ich könnte einen Fronthandler in Betracht ziehen, der die eingehende Anforderung aufräumt oder möglicherweise zu Beginn der Web-Service-Methode eine Zeichenfolgebereinigung ausführt. Vielleicht eine andere JSON-Bibliothek.

Ich frage mich jedoch, ob es eine einfache Antwort gibt: Tweak-Konfiguration, verwenden Sie ein Attribut, eine Einstellungs- oder Überlastmethode, die das Problem lösen kann?

Ich habe ein bisschen um das Internet getan, aber die meisten Artikel umfassen JSON-Daten vom Server an den Kunden und den Umgang mit Fragen in diesem Bereich.


Addendum Note : Full-clientseitige Anrufdetails von Darin Dimitrov

update: Darins Antwort hier inline gepostet, für einfache Referenz generasacodicetagpre.

Hinweis: Dies ist die Ausführungsform des Anrufs, der das gültige JSON-Fragment erzeugt, das oben in der Frage angezeigt wird.

War es hilfreich?

Lösung

Warum machen Sie diese schreckliche manuelle JSON-Deserialisierung in Ihrem Web-Service?Lassen Sie mich Ihnen einen weitaus besseren Ansatz vorschlagen.

Start, indem Sie ein Modell definieren: generasacodicetagpre.

Dann eine Webmethode: generasacodicetagpre.

und dann könnten Sie es von Javascript aufrufen.Zum Beispiel mithilfe von jQuery: generasacodicetagpre.

keine kabooms mehr.

Die hier gezeigte GRESSACDICETICETAGCODE-Methode umfasst moderne Browsern, aber wenn Sie ältere Browser unterstützen müssen, können Sie den JSON2.js Skript auf Ihre Seite.


update:

Jetzt, wo Sie Ihren Code gezeigt haben, scheint es nicht, dass Sie Ihre Anfrage nicht codieren.Versuchen Sie es so: generasacodicetagpre.

Dinge zu bemerken: Sie benötigen keine Sprenchenausdrücke, um einzelne Zitate zu entfernen, und Sie sollten den generationspoDicetagcode verwenden, um Ihre Anforderungswerte ordnungsgemäß zu kodieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top