2017-01-07 2 views
0

Ich bin völlig verwirrt. Ich erhalte eine Ausnahme, wenn zu JSON.parse() die folgende Zeichenfolge versuchen:JSON.parse: unerwartetes Zeichen - Syntax ist korrekt, Datentyp ist Zeichenfolge

{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"} 

Der genaue Fehler berichtet von der Ausnahme ist:

JSON.parse: unerwartetes Zeichen in Zeile 1 Spalte 1 der JSON-Daten

Die Zeichenkettensyntax ist nach JSONLint korrekt. Ich habe auch bestätigt, dass der Datentyp String ist.

Was könnte die Ausnahme verursachen?

+3

Wenn das, was Sie übergeben, 'JSON.parse' wirklich eine Zeichenfolge ist, und das sind wirklich seine Inhalte, erhalten Sie diesen Fehler nicht. (Es sei denn, Sie haben "JSON.parse" durch etwas nicht standardmäßiges ersetzt, was Sie wahrscheinlich nicht haben.) Aktualisieren Sie die Frage mit einem [mcve], das wir tatsächlich sehen können, um das Problem zu demonstrieren. –

+0

Sind Sie sicher, dass die Eingabe für 'JSON.parse' eine' Zeichenfolge' und kein JSON-Objekt ist? –

+0

Hey Ihre Eingabe ist Objekt, weshalb Ihr Fehler erhalten –

Antwort

0

Vielleicht haben Sie vergessen, die Zeichenfolge zu zitieren?

console.log(JSON.parse('{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}'))

die Anführungszeichen Weglassen würde ein Objekt ergeben wörtliche:

console.log({"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"})

+0

Er sagte schon, dass es ** eine Zeichenfolge ist. –

0

Du bist wahrscheinlich buchstäblich diesen Wert zuweisen, wich ist ein Objekt nicht ein Zeichenkette, so:

var invalidJSON = {"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}; 

var validJSON = '{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}'; 
+0

Er sagte schon, dass es ** eine Zeichenfolge ist. –

Verwandte Themen