2010-09-27 22 views
15

मुझे जेएसओएन डेटा प्रारूप की एक अनूठी विशेषता के आसपास अपने सिर को लपेटने में परेशानी है।बैकस्लैश के लिए jQuery JSON पार्सर को डबल से बचने की आवश्यकता क्यों है?

स्थिति निम्नानुसार है: मेरे पास एक स्ट्रिंग है जिसमें विंडोज (श्वास) निर्देशिका पथ है, बैकस्लैश बच निकले हैं। किसी कारण से, 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

पहला भाग जावास्क्रिप्ट स्ट्रिंग शाब्दिक में से बच निकला।
दूसरा भागने JSON स्ट्रिंग अक्षर में इसे से बचता है।

जावास्क्रिप्ट अभिव्यक्ति '{"a":"b:\\c"}' स्ट्रिंग '{"a":"b:\c"}' पर मूल्यांकन करता है।
इस स्ट्रिंग में एक अनचाहे \ है, जो JSON के लिए बच निकला जाना चाहिए। \\ युक्त स्ट्रिंग प्राप्त करने के लिए, प्रत्येक \ जावास्क्रिप्ट अभिव्यक्ति में भाग लिया जाना चाहिए, जिसके परिणामस्वरूप "\\\\" हो सकता है।