2012-07-13 16 views
5

サーバーはJSONでオブジェクトの配列を返します。そうですね。オブジェクト配列のJSON.parse

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

JSON.parse関数を使用して解析する必要があります。私はこのようにこれをやっている:もし

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

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

このコードは動作していない、それは未定義

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

をdoens'tといただきました!あなたの質問 ?? – Jashwant

+0

あなたが投稿したデータが 'dataFromServer'に含まれていると仮定し、あなたがすでにそれを解析した後、' parsedJSON'はすでに配列であり、 'd'というプロパティはありません。オブジェクトのプロパティにアクセスする方法を知りたければ、https://developer.mozilla.org/ja/JavaScript/Guide/Working_with_Objectsをご覧ください –

+1

更新について:これは配列を反復する方法ではありません。 'for ... in'を理解するための次のリンクを見てください:https://developer.mozilla.org/ja/JavaScript/Reference/Statements/for...in。通常のforループを使用して、配列を繰り返し処理します。 –

答えて

6

これは完全に

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

動作します。しかし、これは

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

そして、そうではありません。 'for - in'構造体は、PHPやPythonのように配列要素ではなく、オブジェクトのプロパティを反復するためのものです。 JSは配列を反復するために増分forループが必要です。 –

+0

'for(配列のインデックス){ var value = array [index]; } ' – Alex

2

を返すあなたはちょうどあなたが任意のオブジェクトを同じようにそれらにアクセスすることができますあなたは何とかそれらを使用するように列挙したい、this SO questionを見てください。

0

あなたはoridinary javascriptのオブジェクトがそうであるようにあなたがそれらにアクセスすることができ、 のいずれかであるitem.idまたはitem['id']

+0

どうすればいいですか? –

+0

あなたがあなたの質問を書いたループの中で(ループのための通常のループでなければならない)、オブジェクトを取得し、ドット表記を使用するかマップのようにアクセスするだけでオブジェクトにアクセスします。しかし、@ Rab Nawasはdの値が配列ではなく配列の文字列であることに気付きました。つまり、配列の要素にアクセスする前にJSONオブジェクトに解析する必要があります。 –

関連する問題