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.