Dies hat nichts damit zu tun, dass "Sie vor der Injektion geschützt wird", da nur so wie JSON serialisiert/deserialisiert werden soll.
Dies sind die Schritte beschreibt, warum das, was Sie sehen, das richtige Verhalten ist:
1. Rufen Sie mit C# Variable Sie diese haben:
"SomeText \n MoreText"
2. Wenn Sie Ihr Objekt serialisiert wird, Sie‘ ll müssen diese (dies ist nur ein C# Zeichenfolge ist, die die Anführungszeichen und die Backslash):
"{\"SomeThing\":\"SomeText \\n MoreText\"}"
3. Sobald die JSON an den Client gesendet werden (ein Browser zum Beispiel) es so aussehen werde:
// Notice the C# backslash and quotes escaping is no longer there
{"SomeThing":"SomeText \n MoreText"}
4. Sobald Ihr JSON deserialisiert wird (zum Beispiel unter Verwendung von JavaScript JSON.parse) Ihr Objekt wird wie folgt aussehen:
var myobject = {
SomeThing:"SomeText \n MoreText"
}
Die \n
ist da, weil im ersten Schritt Sie sagten, Sie wollten Eine Zeile wird dort unterbrochen, wenn Sie den Wert von Something ausgeben, wird das \ n als Zeilenumbruch gelesen.Wenn Sie zum Beispiel Something
in Ihrem Browser Konsole aus sehen Sie das:
>> console.log(myobject.Something)
SomeText
MoreText
Nun, wenn Sie die die \\n
nach Schritt entfernt hatte 2 dann den Druck der json in Schritt 3 Sie sich mit dieser beendet hätte:
{"SomeThing":"SomeText n MoreText"}
und im Schritt 4:
var myobject = {
SomeThing:"SomeText n MoreText"
}
und beim Drucken des Inhalts von myobject.SomeThing
in dieser Folge hätte:
>> console.log(myobject.Something)
SomeText n MoreText
Wie wäre es mit dem Ersetzen aller '\\ n' auf' \ n' im Ergebnis? –
Mein Objekt ist komplexer, als ich erwähnt habe, und ich glaube, dass es einen besseren Ansatz mit Serializer-Einstellungen gibt. – Maris