Sekarang tampaknya \r, \b, \t,\f , dll tidak chars hanya bermasalah yang dapat memberikan kesalahan ini.
Perhatikan bahwa beberapa browser mungkin memiliki persyaratan tambahan untuk inputJSON.parse .
Jalankan kode tes ini di browser Anda:
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);
Menguji di Chrome, saya melihat bahwa itu tidak memungkinkan di JSON.parse(String.fromCharCode(0x22, x, 0x22));mana x34, 92, atau dari 0 hingga 31.
Karakter 34 dan 92 adalah karakter "dan \masing-masing, dan mereka biasanya diharapkan dan lolos dengan benar. Karakter 0 hingga 31 yang akan memberi Anda masalah.
Untuk membantu debug, sebelum Anda melakukannya JSON.parse(input), pertama-tama verifikasi bahwa input tidak mengandung karakter yang bermasalah:
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;
}
}
}