Nun offenbar \r
, \b
, \t
, \f
, etc. sind nicht die einzigen problematischen Zeichen , dass Sie diesen Fehler geben kann.
Beachten Sie, dass einige Browser möglicherweise zusätzliche Anforderungen für die Eingabe von haben JSON.parse
.
Führen Sie diesen Testcode in Ihrem Browser aus:
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);
Beim Testen auf Chrome sehe ich, dass es nicht erlaubt, JSON.parse(String.fromCharCode(0x22, x, 0x22));
wo x
34, 92 oder von 0 bis 31 sind.
Chars 34 und 92 sind die "
und \
Zeichen sind, und sie sind in der Regel erwartet und richtig übersetzt . Es sind die Zeichen 0 bis 31, die Ihnen Probleme bereiten würden.
Bevor Sie das Debuggen unterstützen, stellen Sie JSON.parse(input)
zunächst sicher, dass die Eingabe keine problematischen Zeichen enthält:
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;
}
}
}