2012-07-13 15 views
5

Der Server gibt das Array des Objekts in JSON zurück. Es sieht so aus:JSON.parse für das Array des Objekts

{"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)\\/\"} 
]"} 

Ich muss mit JSON.parse Funktion analysieren. Ich tue dies so:

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

Dieser Code funktioniert nicht, es undefined zurück

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

und was Ihre Frage ?? – Jashwant

+0

Angenommen, "dataFromServer" enthält die Daten, die Sie gepostet haben, und Sie haben bereits geparst, dann ist "parsedJSON" bereits ein Array, es hat keine Eigenschaft "d". Wenn Sie wissen möchten, wie Sie auf Eigenschaften von Objekten zugreifen können, sehen Sie sich https://developer.mozilla.org/de/JavaScript/Guide/Working_with_Objects an. –

+1

In Bezug auf Ihr Update: So iterieren Sie nicht über Arrays. Sehen Sie sich den folgenden Link an, um 'for ... in' zu verstehen: https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in. Verwenden Sie eine normale For-Schleife, um über das Array zu iterieren. –

Antwort

6

Das funktioniert perfekt

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

Aber diese doens't

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

Und es sollte nicht. Das For-In-Konstrukt dient zum Iterieren von Objekteigenschaften, nicht von Array-Elementen (wie es bei PHP oder Python der Fall ist). JS benötigt eine inkrementelle for-Schleife, um Arrays zu iterieren. –

+0

'für (Index im Array) { var Wert = Array [Index]; } ' – Alex

2

Sie können sie so wie man es Zugriff auf jedes Objekt:

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

Wenn Sie möchten sie aufzählen, um sie irgendwie zu benutzen, werfen Sie einen Blick auf this SO question.

0

Sie können auf sie zugreifen, wie Sie oridinary Javascript Objekte tun, , die entweder als item.id oder item['id']

+0

Wie mache ich das? –

+0

Innerhalb der Schleife (die eine normale for-Schleife sein sollte, nicht für jede), wo Sie Ihre Frage geschrieben haben, erhalten Sie das Objekt und greifen einfach darauf zu, indem Sie Punktnotation verwenden oder wie eine Karte darauf zugreifen. Aber wie @Rab Nawas bemerkte der Wert von d ist kein Array, sondern eine Zeichenfolge eines Arrays. Dies bedeutet, dass Sie es vor dem Zugriff auf die Elemente im Array in ein JSON-Objekt analysieren müssen. –

Verwandte Themen