Errore di carattere imprevisto JSON.parse


112

Ottengo questo errore:

JSON.parse: carattere inaspettato

quando eseguo questa istruzione in Firebug:

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

Perché è così? La stringa JSON mi sembra corretta e l'ho anche testata utilizzando JSHint. L'oggetto passato nel caso precedente è una risposta del server con il tipo di contenuto impostato suapplication/json

Risposte:


224

Non stai analizzando una stringa, stai analizzando un oggetto già analizzato :)

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.

Voglio dare un voto positivo per la prima frase, ma perché dovresti riesaminarla?
Mathletics

1
@ MarcelKorpel, Mathletics: Giusto. Aggiornato.
kennytm

@Mathletics Per tutti gli account JSON.parse esegue alcuni controlli di sicurezza. NT
BF

5
È divertente. Lo adoro. <3
Darth Egregious

1
Sto ottenendo undefined su data.results (i dati sono un oggetto JSON). Stack mi sta dicendo di renderlo un oggetto js da data = JSON.parse (data). Ma ricevo un errore di carattere imprevisto JSON.parse.
KasparTr

35

Puoi assicurarti che l'oggetto in questione sia stringificato prima di passarlo alla funzione di analisi semplicemente usando JSON.stringify().

Aggiornata la tua riga di seguito,

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

o se hai JSON memorizzato in qualche variabile:

JSON.parse(JSON.stringify(yourJSONobject));

3
JSON.stringify è il capo.
Kenmeister

-1

Non è vero per l'OP, ma questo errore può essere causato dall'uso di virgolette singole ( ') invece di double ( ") per le stringhe.

La specifica JSON richiede virgolette doppie per le stringhe.

Per esempio:

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

dà l'errore, mentre

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

non. Notare le virgolette intornomyString .

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.