Teraz najwyraźniej \r, \b, \t,\f , itp nie są problemem tylko znaków, które mogą dać ci ten błąd.
Pamiętaj, że niektóre przeglądarki mogą mieć dodatkowe wymagania dotyczące wprowadzaniaJSON.parse .
Uruchom ten kod testowy w przeglądarce:
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);
Testując na Chrome, widzę, że nie pozwala JSON.parse(String.fromCharCode(0x22, x, 0x22));gdziex jest 34, 92 lub od 0 do 31.
Znaki 34 i 92 to "i\ znaki odpowiednio, i są one zwykle oczekuje i właściwie uciekł. To znaki od 0 do 31, które sprawiłyby ci problemy.
Aby pomóc w debugowaniu, zanim to zrobisz JSON.parse(input), najpierw sprawdź, czy dane wejściowe nie zawierają problematycznych znaków:
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;
}
}
}