Maintenant , semble - t - \r, \b, \t, \f, etc ne sont pas les caractères seulement problématiques qui peuvent vous donner cette erreur.
Notez que certains navigateurs peuvent avoir des exigences supplémentaires pour la saisie de JSON.parse.
Exécutez ce code de test sur votre navigateur:
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);
En testant sur Chrome, je vois qu'il ne permet pas JSON.parse(String.fromCharCode(0x22, x, 0x22));où xest 34, 92 ou entre 0 et 31.
Les caractères 34 et 92 sont respectivement les caractères "et \, et ils sont généralement attendus et correctement échappés. Ce sont les caractères 0 à 31 qui vous poseraient des problèmes.
Pour faciliter le débogage, avant de le faire JSON.parse(input), vérifiez d'abord que l'entrée ne contient pas de caractères problématiques:
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;
}
}
}