2016-04-19 9 views
2

https://jsbin.com/zuhatujoqo/1/edit?js,consoleJavascript JSON.parse Funktion mit Ajax-Request und "\ n" neue Zeile char entkam

Edit:

{"pd":"ciao \\n ste"} 

eine gültige JSON-Datei Ich anfordernden mit: JSON-Datei diese Zeile hat ein Ajax-Ruf.
Dann JSON.parse das Ergebnis.

Ich verstehe nicht, was passiert mit der "\\ n" entkommen neue Zeile char aus meiner JSON-Datei.

JSON.parse gibt mir ein anderes Ergebnis, wenn ich es mit den gleichen Werten füttere.

var result = JSON.parse(data); 
console.log(result); 
var result2 = JSON.parse('{"pd":"ciao \\n ste"}'); 
console.log(result2); 

wie ich es verstehe der Tatsache zusammenhängen, dass Javascript vor und dann fliehen analysieren (oder URL-Kodierung ??) der Zeichenfolge.

Das Problem ist, dass ich das nicht auch verstehen:

result = result.replace(/\\n/g, "<br />"); 

nicht entkommen ich muß auch den Regex selbst?

Summe: Ich möchte die .json-Datei verwenden, die über Ajax geladen wird. Ich möchte, dass die JSON.parse seinen Job macht und das "\\ n" enternimmt, um den Character der neuen Zeile zurückzugeben.

+1

Backslashes werden in JSON maskiert. in JS-String-Literalen und in JS-Regex-Literalen. Wenn Sie also einen umgekehrten Schrägstrich in der analysierten Ausgabe erhalten möchten, müssen Sie ihn doppelklicken ('JSON.parse (" \\\\ ")'). – Bergi

+0

Was genau ist "Daten"? Sie sollten Ihren Server wahrscheinlich reparieren, wenn er die erwarteten Werte nicht sendet, anstatt zu versuchen, einige Ersetzungen auf der Clientseite durchzuführen. – Bergi

+0

Ich habe eine Bearbeitung vorgenommen, um auch den Inhalt der .json-Datei einzuschließen. Wenn ich die Datenvariable in der Chrome-Konsole überprüfe, sehe ich, dass genau der gleiche Inhalt der .json-Datei vorhanden ist. Ich verstehe nicht, warum das "\\ n" in der JSON nicht (nach json.parse (Daten) in eine neue Zeile char, sondern stattdessen in ein "\ n". Stattdessen, wenn Sie versuchen, JSON.parse direkt in javascript die string (anstatt sie durch ajax zu laden) var result2 = JSON.parse ('{"pd": "ciao \\ n ste"}'); es verwandelt das "\\ n" in eine neue Zeile char – Stefano

Antwort

0

Dank der Antworten, die Bergi mir gegeben hat, verstehe ich jetzt, dass die JSON.parse bereits seinen Job gemacht hat. Es war meine Schuld, ich habe eine JSON-Datei mit "\\ n" anstelle von nur "\ n" zur Verfügung gestellt.

Hier eine aktualisierte jsbin, wo Sie sehen können, dass jetzt JSON.parse das gleiche in verschiedenen Szenario funktioniert. https://jsbin.com/xezipucili/1/edit?js,console