2013-09-24 26 views
6

ho questo JSON:JSON.parse Uncaught SyntaxError: token imprevisto o

var data = [{ 
    "ID":1,"Name":"Test", 
    "subitem": [ 
     {"idenID":1,"Code":"254630"}, 
     {"idenID":2,"Code":"4566"}, 
     {"idenID":3,"Code":"4566"} 
    ] 
}]; 

console.log(JSON.parse(data)); //Uncaught SyntaxError: Unexpected token o 

Come de-serializzare data a JavaScript Object.

+3

Quello che avete qui sono [letterali JavaScript] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables , _and_literals # letterali). La loro sintassi è esattamente dove JSON ha ottenuto il suo. Ma, all'interno del codice JavaScript, JSON sarà sempre formattato con i dati memorizzati all'interno di un 'String', che è il tipo di dati che' JSON.parse() 'si aspetta. –

risposta

12

È già un oggetto ... di tipo Array. Per accedere al Object:

var foo = data[0]; 

alert(foo.ID); 

JSON.parse prende un String e lo analizza in un valore equivalente JavaScript.

2

Questo è utilizzabile in Javascript. È necessario analizzare JSON quando i dati sono in formato String e lo si ottiene dal lato server.

Lo scopo di JSON.parse è quello di convertire in notazione oggetto Javascipt per utilizzarlo. Ad esempio,

var str = "{"a":1,"b":2}"; 
var obj = JSON.parse(str); //obj = {a:1, b:2} 

Riferimento MDN

+0

Tecnicamente, JSON.parse converte * da * JavaScript Object Notation in un oggetto nativo. –

+0

@Colin Puoi spiegare ancora un po '. Secondo MDN, "Analizza una stringa come JSON, trasformando facoltativamente il valore prodotto dall'analisi". https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse – KhanSharp

+1

@Khan: Penso che quello che sta dicendo è che 'JSON.parse' analizza una stringa contenente JSON in un Oggetto JavaScript, e solo il primo è chiamato JSON, non il secondo. – icktoofay

Problemi correlati