2013-04-14 21 views
8

Próbuję parsować ciąg JSON z zagnieżdżonych obiektów odebranych w odpowiedzi na żądanie postu. Po uruchomieniu JSON.parse(responseText), wynik jest w następującym formacie:JSON.parse analizowanie JSON z obiektami zagnieżdżonymi

[{ 
    "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"}, ... 

myślałem, że chciałbym być w stanie wyciągnąć wartości stosując następujące jako przykład, ale wszystkie uzyskać jest niezdefiniowany.

var atco = json[0].atco; 

Próbowałem zostały również json[0][0] ale zwraca indywidualny charakter z JSON ([). Czy to oznacza, że ​​JSON nie został poprawnie przeanalizowany, czy jest to oczekiwane zachowanie, a ja po prostu niepoprawnie się odwołuję?

+0

Będziesz musiał zacytować, jak to analizujesz. Jeśli JSON naprawdę jest taki, jak pokazano, 'json [0] .atco' jest poprawnym sposobem uzyskania dostępu do właściwości' atco' pierwszego wpisu w tablicy. Pozostaje nam spekulować na temat tego, co dzieje się nie tak, co nie jest przydatne dla nikogo. :-) –

+0

proszę napisać skrypt componete json. – ncm

+0

Jeśli json odwołuje się do tego obiektu, tak jak go napisałeś, zadziała: http://jsfiddle.net/XmchJ/ Coś innego dzieje się, podejrzewam "nie jestem, jestem" zorientował się, –

Odpowiedz

10

Oznacza to, że Twój JSON jest podwójnie kodowany. Upewnij się, że kodujesz go tylko raz na serwerze.

Jako dowód, po przeanalizowaniu go ponownie przeanalizuj.

var parsed = JSON.parse(resposneText); 

var parsed2 = JSON.parse(parsed); 

alert(parsed2.atco); 

Albo to, albo jesteś analizowania go, ale potem próbuje wybrać dane z oryginalnego łańcucha. To oczywiście nie działa.

+0

Dzięki, to było podwójne kodowanie w skrypcie PHP. – Dannyboy1430

+0

@ Dannyboy1430: Nie ma za co. –

Powiązane problemy