2013-04-14 19 views
8

Sto tentando di analizzare una stringa JSON con oggetti nidificati ricevuti nella risposta di una richiesta di post. Dopo aver eseguito JSON.parse(responseText), il risultato è il seguente formato:JSON.parse che analizza JSON con oggetti nidificati

[{ 
    "atco":"43000156407", 
    "location":{ 
    "longitude":"-1.7876500000000000", 
    "latitude":"52.4147200000000000"," 
    timestamp":"2013-03-19 11:30:00" 
    }, 
    "name":"Solihull Station Interchange", 
    "road":"STATION APPROACH", 
    "direction":"NA", 
    "locality":"Solihull", 
    "town":"Solihull"}, ... 

ho pensato che sarebbe poi i valori di trazione in grado utilizzando il seguente come esempio, ma tutto quello che ottiene è indefinito.

var atco = json[0].atco; 

Ho anche provato json[0][0] ma che restituisce un carattere individuale dal JSON ([). Questo indica che il JSON non ha analizzato correttamente, o è questo comportamento atteso e sto solo facendo riferimento in modo errato?

+0

Devi citare come stai analizzando quello. Se il JSON è realmente come mostrato, 'json [0] .atco' è il modo corretto per accedere alla proprietà' atco' della prima voce dell'array. Quindi questo ci lascia fare ipotesi su cosa sta andando male, che non è utile a nessuno. :-) –

+0

per favore scrivi compelete json script. – ncm

+0

se json si riferisce a quell'oggetto come lo hai scritto, funzionerà: http://jsfiddle.net/XmchJ/ Qualcos'altro sta succedendo, sospetto "non sono io" ha capito –

risposta

10

Ciò significa che il JSON è in doppia codifica. Assicurati di codificarlo solo una volta sul server.

Come prova, dopo averlo analizzato, analizzarlo di nuovo.

var parsed = JSON.parse(resposneText); 

var parsed2 = JSON.parse(parsed); 

alert(parsed2.atco); 

O che, o si sta analizzando, ma poi cercando di selezionare i dati dalla stringa originale. Questo ovviamente non funzionerebbe.

+0

Grazie, è stato essendo doppia codificato nello script PHP. – Dannyboy1430

+0

@ Dannyboy1430: prego. –

Problemi correlati