javascript - Why does the jQuery JSON parser need double escaping for backslashes? -


I have a problem wrapping my head around a specific feature of the JSON data format.

The situation is as follows: I have a string in which Windows ( sigh ) is the directory path, backslashes are escaped. For some reason, jQuery's JSON Parser thinks that a single escape is not enough.

  & lt; Script type = "text / javascript" src = "http://ajax.googleapis.com/ ajax / libs / jQuery / 1.4.2 / jquery.min.js" & gt; & Lt; / Script & gt; & Lt; Script type = "text / javascript" & gt; Var success = jQuery.parseJSON ('{"a": "b: \\\\ c"}'); Var failure = jQuery.parseJSON ('{"a": "b: \\ c"}'); & Lt; / Script & gt;  

Can someone explain what is the need to avoid such a double?

The first escape saves it in the javascript string.
In the JSON string it survives from the other escape.

Evaluates the JavaScript expression '{"a": "b: \\ c"}' string '{"a": "b: \ c "} '' .
This string has a single unchanged \ , which must be saved for JSON. To get the string containing \\ , you must save each \ in JavaScript expression, which will result in "\\\\" .


Comments