検索

ホームページ  >  に質問  >  本文

javascript - JSON.parse() のエスケープ文字を理解するにはどうすればよいですか?

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

リーリー

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

となります。


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

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

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

リーリー

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

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

の代わりに
\\

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

###しかし、なぜ?

世界只因有你世界只因有你2799日前628

全員に返信(1)返信します

  • 学习ing

    学习ing2017-06-14 10:53:54

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

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

    リーリー

    に変換されます リーリー

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

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

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

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

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

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

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

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

    返事
    0
  • キャンセル返事