Aus verschiedenen Gründen, die ich von ASP.NET MVC gebaut in JSON Serializer eingeschaltet haben ( derjenige, der ein zurück (siehe bearbeiten unten)) zu Newtonsoft. Ich erkannte erst, nachdem ich mit dem Testen begonnen hatte, dass die erste ein JavaScript-Objektliteral zurückgibt, während Newtonsoft eine JSON-formatierte -Zeichenfolge zurückgibt.Return JavaScript Objektliteral, nicht JSON-String, von ASP.NET MVC EndpunktSystem.Web.Mvc.JsonResult
Objekt
Ich mag es nicht, JSON-Strings auf der Client-Seite zu analysieren - es als Objekt-Literal ist sehr praktisch - aber ich möchte aus anderen technischen Gründen bei Newtonsoft bleiben.
Zum Beispiel, anstatt dieses Ergebnis zu sehen, auf meinem Klienten ...
"{"Errors":["Please enter a valid email address."],"HasErrors":true}"
... Ich möchte dieses Ergebnis sehen:
{"Errors":["Please enter a valid email address."],"HasErrors":true} // no quotes
Gibt es eine Möglichkeit zu machen Newtonsoft gibt JS-Objektliterale anstelle von Zeichenfolgen zurück?
EDIT
Die Art und Weise meine Frage eingerahmt wurde, war nicht die beste. Mit dem Typ JsonResult
ist nichts falsch. Tatsächlich verwendet die Lösung es immer noch. Das einzige Problem war die Standardmethode Controller.Json
, die überschrieben werden kann, um Newtonsoft (Json.NET) anstelle des integrierten Serialisers zu verwenden.
Ich bin nicht so vertraut mit der .NET-Welt - ist Newtonsoft auf dem Server? Denn in diesem Fall sollten Sie niemals ein JS-Literal vom Server zurückgeben können. In einer Netzwerkanfrage sowieso nicht. Oder ist das irgendwo in der Seite eingebettet, wenn es gerendert wird? – vlaz
Können Sie Ihre JS-Datei nicht mit einem JSON.Parse (Antwort) bearbeiten? –
Wie erstellen Sie Ihre JSON-Antworten und geben sie mit Json.Net von MVC zurück? –