Ora a quanto pare \r
, \b
, \t
,\f
, ecc non sono i caratteri problematici solo che può dare questo errore.
Si noti che alcuni browser potrebbero avere requisiti aggiuntivi per l'input diJSON.parse
.
Esegui questo codice di prova sul tuo browser:
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);
Test su Chrome, vedo che non consente JSON.parse(String.fromCharCode(0x22, x, 0x22));
dovex
sia 34, 92 o da 0 a 31.
Chars 34 e 92 sono l' "
e \
personaggi, rispettivamente, e di solito sono attesi e adeguatamente fuggiti. Sono i caratteri da 0 a 31 che potrebbero darti problemi.
Per facilitare il debug, prima di farlo JSON.parse(input)
, verifica innanzitutto che l'input non contenga caratteri problematici:
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;
}
}
}