2012-07-13 7 views
5

Serwer zwraca tablicę obiektu w JSON. Wygląda tak:JSON.parse dla tablicy obiektu

{"d":"[ 
    {\"Id\":1,\"IsGood\":true,\"name1\":\"name1dsres\",\"Name2\":\"name2fdsfd\",\"name3\": \"name3fdsgfd\",\"wasBorn\":\"\\/Date(284011000000)\\/\"}, 
    {\"Id\":2,\"IsGood\":false,\"name1\":\"fdsfds\",\"name2\":\"gfd3im543\",\"name3\":\"3543gfdgfd\",\"WasBorned\":\"\\/Date(281486800000)\\/\"} 
]"} 

Potrzebuję parsować przy użyciu funkcji JSON.parse. Robię to w ten sposób:

function myFunction(dataFromServer){ 
     var parsedJSON = JSON.parse(dataFromServer.d); 
     for (var item in parsedJSON.d) { 
      // how do I get the fields of current item? 
     } 

Ten kod nie działa, zwraca niezdefiniowana

for (var item in parsedJSON) { 
     alert(item.Id); 
} 
+0

i Whats Twoje pytanie ?? – Jashwant

+0

Zakładając, że 'dataFromServer' zawiera dane, które opublikowaliście i już je przeanalizowaliście, to' parsowanyJSON' jest już tablicą, nie ma właściwości 'd'. Jeśli chcesz wiedzieć, jak uzyskać dostęp do właściwości obiektów, zajrzyj na stronę https://developer.mozilla.org/en/JavaScript/Guide/Working_with_Objects –

+1

Jeśli chodzi o twoją aktualizację: To nie jest tak, jak iterujesz po tablicach. Spójrz na poniższy link, aby zrozumieć "dla ... w": https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in. Użyj zwykłej pętli 'for' do iteracji po tablicy. –

Odpowiedz

6

To działa doskonale

function myFunction(dataFromServer){ 
     var parsedJSON = JSON.parse(dataFromServer.d); 
     for (var i=0;i<parsedJSON.length;i++) { 
      alert(parsedJSON[i].Id); 
     } 
} 

Ale to doens't

function myFunction(dataFromServer){ 
      var parsedJSON = JSON.parse(dataFromServer.d); 
      for (var item in parsedJSON) { 
       alert(item.Id); 
     } 
} 
+2

A nie powinno. Konstrukcja 'for - in' służy do iterowania nad właściwościami obiektu, a nie nad elementami tablicy (jak w PHP lub Pythonie). JS potrzebuje inkrementalnej pętli do iterowania tablic. –

+0

'for (indeks w tablicy) { var value = array [indeks]; } ' – Alex

2

Można tylko dostęp do nich tak jak każdy przedmiot:

var id = item.Id; 
if (item.IsGood) { ... } 

Jeśli chcesz je wyliczyć, aby użyć jakoś, spójrz na this SO question.

0

Można uzyskać do nich dostęp, jak to zrobić oridinary obiektów JavaScript, że jest albo jako item.id lub item['id']

+0

Jak to zrobić? –

+0

Wewnątrz pętli (która powinna być normalną pętlą, nie dla każdego), w której pisałeś pytanie, otrzymujesz obiekt i masz do niego dostęp za pomocą notacji kropkowej lub dostępu do niej jak mapy. Ale jak @Rab Nawas zauważył, że wartość d nie jest tablicą, ale ciągiem tablicy. Oznacza to, że musisz sparsować go do obiektu JSON przed uzyskaniem dostępu do elementów w tablicy. –

Powiązane problemy