2012-05-10 5 views
8

Ich erhalte Fehler, sowohl in den Chrome- als auch in den Firefox-Entwicklertools, wenn ich folgendes auswerten möchte :"SyntaxError: Unerwartetes Token:" bei der Eingabe von {"a": "", "b": ""} json in der Konsole

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

jsonlint.com sagt mir, dass es gültig ist. Putting diesen Code in einer tatsächlichen Javascript-Datei und läuft es gut. Die Fremdheit taucht nur auf, wenn ich dies in der Konsole in Chrome-Entwicklertools oder Firebug ausführe. Was ist denn hier los?

+0

Werke für mich in Firebug, Zumindest wird es analysiert, wenn ich dieses Objekt einer Variablen zuweise. Ich bekomme einen anderen Fehler, wenn ich das Objekt ganz alleine benutze. –

+1

Wickeln Sie es in Parens. –

+0

mögliches Duplikat von [Ein JavaScript-Objekt in der Konsole definieren] (http://stackoverflow.com/questions/9082110/defining-a-javascript-object-in-console) –

Antwort

9

Sie können JSON nicht in der Konsole ausführen. Die JavaScript-Engine hält eine block-Anweisung mit einem Label für möglich.

So folgt aus:

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

wird als Blockanweisung interpretiert. Der "a": Teil wird als Label interpretiert. Der "", "b" Teil wird als Ausdruck interpretiert (zwei String-Literale und ein Komma-Operator dazwischen). Jetzt ist das zweite : Zeichen in dieser Position ungültig ... Als nächstes wird "a" als Zeichenfolgenliteral interpretiert, und die : ist nicht an dieser Position gültig.

Sie arbeiten mit JSON wie so:

  1. Sie steckte es in eine .json Datei,
  2. Sie rufen es über Ajax als String,
  3. Sie analysieren die Zeichenfolge in ein Objekt mit JSON.parse().

(Sie können auch zum Beispiel, oder in dem localStorage Objekt in einer Variablen, JSON-Daten als Zeichenfolge halten. So oder so, sollten in Bezug auf JavaScript, JSON-Daten als String-Wert immer kommen.)

+0

Vielen Dank, Sir, ich wurde verdammt sauer. musste es einer Variable zuweisen, um chrome zu zeigen, 'a = {" foo ":" bar "}' – ThorSummoner

7

Eigentlich für einmalige Prüfung (mein Haupt Verwendung der Debug-Konsole), Sie können JSON-Objekt Syntax eingeben, aber Sie haben es zu einer variablen zuzuweisen:

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

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