2013-12-10 21 views
5

Ho un pezzo di JS in esecuzione in IE con la seguente riga:Perché JSON.Parse dice "carattere non valido"?

var data = JSON.parse("{ skill: 'SK_AUTO_DEV_TEST', kind: 'IS_REQUIRED' }");

Qualcuno mi può dire cosa c'è di sbagliato in questo?

+6

Si prega di dare un'occhiata a [JSONLint] (http://jsonlint.com/). È un validatore online che fornisce buoni messaggi di errore. –

risposta

13

perché non è JSON valido

JSON.parse('{ "skill": "SK_AUTO_DEV_TEST", "kind": "IS_REQUIRED" }'); 
+1

Grazie. Perché le virgolette sono richieste intorno ai nomi delle proprietà? Ho visto che non è sempre il caso w/parser JSON. – skb

+2

Lo standard richiede le virgolette. 'JSON.parse()' lo segue e forse l'altro parser che hai usato era rilassato su quella regola. Il motivo è di aggirare il problema della parola riservata. Crea un oggetto semplice in un file JavaScript e prova "{if: 0}" e "{" if ": 0}". Indovina quale è un errore? – epascarello

+0

Ciao @epascarello, qualsiasi idea su come gestire il codice sottostante 'var text = '{" skill ":" SK_AUTO_DEV_TEST "," kind ":" IS_REQUIRED "}'; JSON.parse (testo); 'Per me sta dicendo Char non valido nella riga di analisi. Mi sono stancato in w3school con virgolette singole, ma è funzionante, ma nella mia javascript l'aggiunta di virgolette all'inizio e alla fine rende la mia analisi come 'JSON.parse (" {"skill": "SK_AUTO_DEV_TEST", "kind": " IS_REQUIRED "}"); ' – Jaikrat

2

Per approfondire la risposta di epascarello, si rimanda al json.org. Nota nel primo diagramma che il nome nella coppia nome/valore è definito come "stringa". Quindi notare nel diagramma che definisce "stringa" che deve iniziare e terminare con virgolette. Si noti inoltre che questo si applica sia al nome che al valore.

Problemi correlati