अब जाहिरा तौर पर \r
, \b
, \t
, \f
, आदि केवल समस्याग्रस्त वर्ण कि आपको यह त्रुटि दे सकते हैं नहीं कर रहे हैं।
ध्यान दें कि कुछ ब्राउज़रों के इनपुट के लिए अतिरिक्त आवश्यकताएं हो सकती हैं JSON.parse
।
इस परीक्षण कोड को अपने ब्राउज़र पर चलाएँ:
var arr = [];
for(var x=0; x < 0xffff; ++x){
try{
JSON.parse(String.fromCharCode(0x22, x, 0x22));
}catch(e){
arr.push(x);
}
}
console.log(arr);
क्रोम पर परीक्षण, मैं देखता हूं कि यह अनुमति नहीं है कि 34, 92 या 0 से 31 तक JSON.parse(String.fromCharCode(0x22, x, 0x22));
कहां x
है।
वर्ण 34 और 92 हैं "
और \
क्रमश: वर्ण, और वे आम तौर पर उम्मीद कर रहे हैं और ठीक से फरार हो गए। यह 0 से 31 का चार्ट है जो आपको समस्याएं देगा।
डिबगिंग में मदद करने के लिए, इससे पहले कि आप यह JSON.parse(input)
सत्यापित करें कि इनपुट में समस्याग्रस्त वर्ण नहीं हैं:
function VerifyInput(input){
for(var x=0; x<input.length; ++x){
let c = input.charCodeAt(x);
if(c >= 0 && c <= 31){
throw 'problematic character found at position ' + x;
}
}
}