JsonConvert.DeserializeObject Sonderzeichen Unterminated string. Erwartet Trennzeichen:
Aus irgendeinem Grund, wenn ich ein Sonderzeichen in meinem knockout-Modell und wandeln Sie es in ein json-Objekt, das die Zeichenfolge endet dort, wo der spezielle Charakter sein soll und ich bekomme eine Fehlermeldung beim Deserialisieren:
$.ajax({
url: "/Admin/Forms/Convert",
type: "post",
//contentType: "application/json",
dataType: "text",
data: "modelData=" + ko.toJSON(theModel),
success: function (data) {
//window.open("/Admin/Forms/DisplayClient");
var win = getFullWindow('/Admin/Forms/DisplayClient');
win.open();
},
error: function (xhr, status, msg) { alert(msg); }
});
Wenn ich nach dieser Methode:
public void Convert(string modelData)
{
Form form = JsonConvert.DeserializeObject<Form>(modelData);
}
Bekomme ich eine Fehlermeldung:
Unterminated string. Expected delimiter: ". Path 'Name', line 1, position 178.
InformationsquelleAutor user3272686 | 2014-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wird ein JSON-string enthält Sonderzeichen wie Anführungszeichen ", Backslash \ oder Schrägstriche /, Sie müssen mit backslashes escaped werden . Es gibt keine JSON-parser, der wird in der Lage sein, sich mit einer JSON-Zeichenfolge ist nicht ordnungsgemäß formatiert in den ersten Platz.
So müssen Sie sicherstellen, dass Ihre
theModel
formatiert ist angemessen und nach JSON.org standards.Ich fand die Antwort auf meine eigene Frage: die Flucht(ko.toJSON(theModel)) Alles was ich brauche ist die escape-Funktion und es funktioniert Super.
InformationsquelleAutor Paweł Bejger
Ich habe den gleichen Fehler ein paar mal. Ich habe aktualisiert mein Internet.config mit mehr max-Längen, um sicherzustellen, dass keine abschneiden.
Die alsterrunde () - Funktion kodiert einen URI-Komponente.
Diese Funktion codiert die Sonderzeichen. Darüber hinaus codiert die folgenden Zeichen: , /? : @ & = + $ #
Diese wurde nun Hinzugefügt, um meine ajax-Anfragen:
InformationsquelleAutor tyler_mitchell
Fand ich eine Antwort auf meine eigene Frage: die Flucht(ko.toJSON(theModel)) Alles was ich brauche ist die escape-Funktion und es funktioniert Super.
dies ist eine javascript-Funktion, die ist veraltet (v1.5) siehe meine Antwort für die aktuelle Antwort. c# - version dieses wäre Uri.UnescapeDataString()
InformationsquelleAutor user3272686