JSON.parse unerwarteter Zeichenfehler

112

Ich erhalte diesen Fehler:

JSON.parse: unerwartetes Zeichen

wenn ich diese Anweisung in firebug ausführe:

JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});

Wieso ist es so? Die JSON-Zeichenfolge scheint mir korrekt zu sein, und ich habe sie auch mit JSHint getestet. Das übergebene Objekt im obigen Fall ist eine Serverantwort mit dem Inhaltstyp gesetztapplication/json

krishna
quelle

Antworten:

224

Sie analysieren keine Zeichenfolge, sondern ein bereits analysiertes Objekt :)

var obj1 = JSON.parse('{"creditBalance":0,...,"starStatus":false}');
//                    ^                                          ^
//                    if you want to parse, the input should be a string 

var obj2 = {"creditBalance":0,...,"starStatus":false};
// or just use it directly.
kennytm
quelle
Ich möchte den ersten Satz positiv bewerten, aber warum sollten Sie ihn erneut analysieren?
Mathletics
1
@MarcelKorpel, Mathletics: Richtig. Aktualisiert.
Kennytm
@Mathletics Von allen Konten führt JSON.parse einige Sicherheitsüberprüfungen durch. NT
BF
5
Das ist komisch. Liebe es. <3
Darth Egregious
1
Ich werde für data.results undefiniert (Daten sind ein JSON-Objekt). Stack fordert mich auf, es mit data = JSON.parse (data) zu einem js-Objekt zu machen. Ich erhalte jedoch den unerwarteten Zeichenfehler JSON.parse.
KasparTr
35

Sie können sicherstellen, dass das betreffende Objekt stringifiziert ist, bevor Sie es an die Analysefunktion übergeben, indem Sie es einfach verwenden JSON.stringify().

Aktualisierte deine Zeile unten,

JSON.parse(JSON.stringify({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false}));

oder wenn Sie JSON in einer Variablen gespeichert haben:

JSON.parse(JSON.stringify(yourJSONobject));
ScrapCode
quelle
3
JSON.stringify ist der Boss.
Kenmeister
-1

Nicht wahr für das OP, aber dieser Fehler kann durch die Verwendung von einfachen Anführungszeichen ( ') anstelle von double ( ") für Zeichenfolgen verursacht werden.

Die JSON-Spezifikation erfordert doppelte Anführungszeichen für Zeichenfolgen.

Z.B:

JSON.parse(`{"myparam": 'myString'}`)

gibt den Fehler, während

JSON.parse(`{"myparam": "myString"}`)

nicht. Beachten Sie die Anführungszeichen myString.

Verwandte: https://stackoverflow.com/a/14355724/1461850

atomh33ls
quelle