javascript - JSON.parse() のエスケープ文字を理解するにはどうすればよいですか?
世界只因有你
世界只因有你 2017-06-14 10:51:54
0
1
623

。 。 。ある人が私にこの質問をしました。 。私もよくわかりません

リーリー

上記は正常に実行できます。 。結果は {test: "これはテスト フィールドを持つオブジェクトです"}

となります。


しかし、test フィールドに 二重引用符 を追加すると、非常に奇妙な問題が発生します。 リーリー

上記ではエラーが報告されますが、これは正常です。

エスケープ文字を追加します

リーリー

結果は依然としてエラーですが、この文字列を直接入力しても、図に示すようにエスケープされた文字列は正常に表示されます。

驚くべきことは。 。エスケープ文字として \

の代わりに
\\

を使用して、誤って次のようなコードを作成してしまいました。 。 。結果は正常です。

###しかし、なぜ?

世界只因有你
世界只因有你

全員に返信(1)
学习ing

それは、JSON.parse の実行プロセスが実際に 2 回のエスケープを経ているためです。

Once は文字列自体のエスケープです:

リーリー

に変換されます リーリー

(この文字列はブラウザのコマンドラインに直接入力できます)

Once は文字列をオブジェクトに変換するときのエスケープです:

に変換されているため リーリー

「"」は「"」のエスケープ文字とみなされ、オブジェクトに正しく変換されます。

「」が 1 つしかない場合、文字列をオブジェクトに変換するときに、テスト フィールドの値に二重引用符のペアが 2 つ存在し、エラーが報告されます。

ES5仕様の解析メソッドを再度確認してみました:

最初のステップは、対応する文字列自体をエスケープすることです

2番目のステップは文字列をオブジェクトに変換する際のエスケープに対応します

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート