2016-04-19 19 views
2

https://jsbin.com/zuhatujoqo/1/edit?js,consoleJavascriptのJSON.parse機能は、と "\ n" は改行は編集

文字エスケープajax呼び出し。
JSON.parse結果。

私のjsonファイルから来るエスケープされた改行文字である "\\ n"について何が起こっているのか分かりません。

JSON.parseは、同じ値を入力すると私に違う結果が得られます。

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

私はそれがJavaScriptの前に、その後に(??またはアンエスケープ)エスケープされている解析という事実に関連する可能性が理解するようにストリング。

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

iはまた、正規表現自体をエスケープする必要があります:

問題は、私はまた、このことを理解していないということですか?

合計:Ajax経由でロードされた.jsonファイルを使用します。 私はJSON.parseで仕事をして、 "\\ n"をエスケープしてNewLineの文字を返すようにします。

+1

JSONではバックスラッシュがエスケープされます。 JS文字列リテラルとJS正規表現リテラルでは、解析された出力にバックスラッシュを付けるには、それを二重にエスケープする必要があります( 'JSON.parse(" \\\\ ")')。 – Bergi

+0

「データ」とは何ですか?クライアント側でいくつかの置換を行うのではなく、予期した値を送信しない場合は、サーバーを修正する必要があります。 – Bergi

+0

.jsonファイルの内容も含めて編集しました。私がクロムコンソール内のデータ変数を調べると、それは.jsonファイルとまったく同じ内容を保持していることがわかります。私はなぜJSON内の "\\ n"がjson.parse(データ)の後に新しい行のcharに変換されるのではなく、代わりに "\ n"に変換されないのか理解できません。 ( "{" pd ":" ciao \\ n ste "} ');これは本当に" \\ n "を改行文字に変換しています。 – Stefano

答えて

0

Bergiから寄せられた回答のおかげで、JSON.parseが既に自分の仕事をしていたことが分かりました。 それは私のせいで、私はちょうど "\ n"の代わりに "\\ n"というファイルを提供していました。

ここでは、JSON.parseが異なるシナリオで同じように動作することを確認できる最新のjsbinがあります。 https://jsbin.com/xezipucili/1/edit?js,console

関連する問題