2012-03-15 23 views
0

私はそれらのデータに問題を持って、JSONループjqueryのそれぞれが動作しません

私のJSON配列データが含まれている「未定義」:

 
{"list_file":["{\"id\":\"511\",\"name\":\"Jellyfish.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":775702,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}","{\"id\":\"510\",\"name\":\"Hydrangeas.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":595284,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}","{\"id\":\"509\",\"name\":\"dudnzoizu ufoiuzio fueoifezuoiufifzeouofufzeoiuiofuz oife iofez.jpg\",\"projectId\":\"12539\",\"projectName\":\"project namessszd ddddzzde\",\"time\":\"1331843704\",\"size\":885242,\"timeRightFormat\":\"03\\\/15\\\/12 01:35:04 PM\",\"userFirstName\":\"Jerome\",\"userLastName\":\"Test\",\"userId\":\"8\"}"]} 

ときに、この

ような要素からiは、ループ
$.each(data.list_file, function(i, file) { 
     alert(file.id); 
    }); 

私は未定義の警告で()のボックスを持って、しかし、私はちょうどこの代わりに

 $.each(data.list_file, function(i, file) { 
     alert(file); 
    }); 
をすれば

私は正しいjsonラインを得ました。

EDITありがとう:配列全体で、この時間

+0

それは単純に文字列として扱われ、jsonとして扱われないからですか?アラート(ファイルのタイプ)。 ? – mikevoermans

+0

これは[]内にラップされていない限り、あなたが投稿したものは有効なJSONではありません。ラップされていれば、あなたの関数は正常に動作するはずです... http://jsfiddle.net/skram/F9Mrd/ –

+0

ok今度は完全なjsonコードで配列を編集しました –

答えて

1

私はあなたがajax呼び出しを行っていると仮定しています。 jsonがjsonとして解析するように、 "json"データ型を指定する必要があります。

$.ajax({ 
    url: url, 
    dataType: "json", 
    success: function (data) { 
     // ... 
    } 
}) 

UPDATE:あなたのJSON配列は、JSON文字列の配列である

、オブジェクトの配列にあることを変更してみてください:

{ "list_file": [ "{...}" ]} 

{ "list_file": [ {...} ]} 
+0

私はOK getJSON機能 –

+0

を使用し、私はそれがこのようなものだかなり確信している。このおかげで –

+0

を試してみましょう;) –

0

は、これはあなたが括弧でそれをラップする必要がありない有効なJSON

です!

多くのオブジェクトが配列内にある必要があります。

これを最初に修正してください。後でチェックする。

+0

データは、括弧内に、この私のJSON配列 –

+0

待ちの一部でしかありません、それは配列ですが、それは私がここ – dwerner

+0

@Jeromeであるべきです;) –

2

JSONを[]で囲むと、うまく動作します。 あなたが持っているものはjsonリストです。

そして、あなたはあなたがして、オブジェクトに プロパティにアクセスするための通常の表記法を使用することができますJSONを解析する場合は、このTinker.io

をチェックしてください。

検証JSON here!

幸運!

+0

私のJSONは実際に私が編集で配列全体を掲示し、有効です。) –

1

何であるべきinside list_fileは文字列であり、Objectではありません。実際には、それぞれ3つの文字列を持ちます。以下のような関数を使ってみてください。

$.each(data['list_file'], function(i, file) { 
    alert(JSON.parse(file).id); 
}); 
+0

はい、それは解決のおかげでした;) –

関連する問題