2010-09-27 64 views
15

我無法繞過JSON數據格式的特有功能。爲什麼jQuery JSON解析器需要對反斜槓進行雙重轉義?

情況如下:我有一個字符串包含一個Windows(嘆息)目錄路徑,反斜槓已經轉義。出於某種原因,jQuery JSON解析器認爲只有一次轉義是不夠的。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"> 

var success = jQuery.parseJSON('{"a":"b:\\\\c"}'); 
var failure = jQuery.parseJSON('{"a":"b:\\c"}'); 

</script> 

任何人都可以解釋是什麼讓這樣的雙重逃脫必要?

回答

27

第一次轉義在Javascript字符串文字中轉義它。
第二次轉義在JSON字符串文字中轉義它。

Javascript表達式'{"a":"b:\\c"}'的計算結果爲字符串'{"a":"b:\c"}'
該字符串包含一個未轉義的\,必須轉義爲JSON。爲了得到一個包含\\的字符串,每個\必須在Javascript表達式中轉義,導致"\\\\"