Şimdi görünüşe göre \r
, \b
, \t
,\f
, vb, söz konusu hatayı sadece sorunlu karakter değildir.
Bazı tarayıcıların giriş için ek gereksinimler olabileceğini unutmayın .JSON.parse
.
Bu test kodunu tarayıcınızda çalıştırın:
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);
Chrome'da Test, ben izin vermez görüyoruz JSON.parse(String.fromCharCode(0x22, x, 0x22));
neredex
, 34, 92 veya 0'dan 31'e .
Karakter 34 ve 92 sırasıyla "
ve \
karakteridir ve genellikle beklenir ve düzgün bir şekilde kaçarlar. Size sorun verecek olan 0 ila 31 karakterleri.
Hata ayıklamaya yardımcı olmak için, sizden önce JSON.parse(input)
, girişin sorunlu karakterler içermediğini doğrulayın:
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;
}
}
}