2012-05-10 25 views
8

Pojawiają się błędy, zarówno w programach narzędziowych do Chrome'a, jak i Firefoksa, podczas próby oceny następujących elementów: :"Błąd składni: nieoczekiwany token:" podczas wprowadzania {"a": "", "b": ""} json w konsoli

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

jsonlint.com mówi mi, że jest ważny. Umieszczenie tego kodu w rzeczywistym pliku javascript i uruchomienie go działa dobrze. Dziwność pojawia się tylko wtedy, gdy uruchomię to na konsoli w chrome developer tools lub firebug. Co tu się dzieje?

+0

działa na mnie w Firebug, lub przynajmniej przeanalizuje go, jeśli przypiszę ten obiekt do zmiennej. Dostaję inny błąd po prostu całkowicie używając obiektu. –

+1

Zawiń w parens. –

+0

możliwy duplikat [Definiowanie obiektu JavaScript w konsoli] (http://stackoverflow.com/questions/9082110/definicje-a-javascript-object-in-console) –

Odpowiedz

9

Nie można wykonać JSON w konsoli. Silnik JavaScript uważa, że ​​jest to instrukcja blokowa z etykietą.

Więc tak:

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

jest interpretowane jako oświadczenie bloku. Część "a": jest interpretowana jako etykieta. Część jest interpretowana jako wyrażenie (dwa ciągi literałów i operator przecinka pośredniego). Teraz drugi znak : jest nieprawidłowy w tej pozycji ... Następnie "a" jest interpretowany jako literał ciąg, a : nie jest prawidłowy w tej pozycji.

pracować z JSON tak:

  1. go umieścić w pliku .json,
  2. można pobrać go za pośrednictwem Ajax jako ciąg,
  3. można analizować ciąg do obiektu z JSON.parse().

(można również zachować dane JSON jako ciąg znaków w zmiennej, na przykład, czy w obiekcie localStorage. Tak czy inaczej, w odniesieniu do JavaScriptu, dane JSON zawsze powinien przyjść jako wartość ciągu.)

+0

Dziękuję, proszę pana, nad tym szalałem. musiał przypisać go do zmiennej, aby uzyskać chrom, aby to pokazać, 'a = {" foo ":" bar "}' – ThorSummoner

7

Właściwie do jednorazowego badania (mój główny Korzystanie z konsoli debugowania), to może wprowadzić składnię obiektu JSON, ale trzeba przypisać ją do zmiennej:

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

> x 
Object 
    a: "" 
    b: "" 
    __proto__: Object 
Powiązane problemy