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

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.

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));

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.