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.