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ù x
est 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;
}
}
}