2012-05-10 5 views
8

Ottengo errori, sia in Chrome che in Firefox, quando si tenta di valutare quanto segue :"SyntaxError: Inaspettato token:" quando si immette {"a": "", "b": ""} json nella console

{ 
    "a": "", 
    "b": "" 
} 

jsonlint.com mi dice che è valido. Mettendo questo codice in un vero file javascript e l'esecuzione funziona bene. La stranezza si manifesta solo quando eseguo questo nella console con gli strumenti di sviluppo di Chrome o Firebug. Cosa sta succedendo qui?

+0

lavora per me a Firebug, o almeno, lo analizzerà se assegno quell'oggetto a una variabile. Ottengo un errore diverso semplicemente usando l'oggetto completamente da solo. –

+1

Avvolgere in parens. –

+0

possibile duplicato di [Definizione di un oggetto JavaScript nella console] (http://stackoverflow.com/questions/9082110/defining-a-javascript-object-in-console) –

risposta

9

Non è possibile eseguire JSON nella console. Il motore JavaScript pensa che sia una dichiarazione di blocco, con un'etichetta.

Quindi questo:

{ 
    "a": "", "b": "" 
} 

viene interpretato come una dichiarazione di blocco. La parte "a": viene interpretata come un'etichetta. La parte "", "b" viene interpretata come un'espressione (due valori letterali stringa e un operatore virgola tra). Ora il secondo carattere : non è valido in quella posizione ... Successivamente, lo "a" viene interpretato come una stringa letterale e lo : non è valido in quella posizione.

si lavora con JSON in questo modo:

  1. Si mette in un file .json,
  2. si recupera tramite Ajax come una stringa,
  3. si analizza la stringa in un oggetto con JSON.parse().

(È inoltre possibile mantenere i dati JSON come stringa in una variabile, per esempio, o nell'oggetto localStorage. In entrambi i casi, per quanto riguarda JavaScript, dati JSON dovrebbero sempre venire come un valore stringa.)

+0

Grazie signore, stavo per impazzire. dovevo assegnarlo a una variabile per ottenere chrome per mostrarlo, 'a = {" foo ":" bar "}' – ThorSummoner

7

in realtà, per una tantum di test (il mio uso principale della console di debug), è può entrare sintassi oggetto JSON, ma è necessario assegnarlo a una variabile:

> var x ={ 
    "a": "", 
    "b": "" 
    } 
undefined 

> x 
Object 
    a: "" 
    b: "" 
    __proto__: Object 
Problemi correlati