@KaeVerensに同意します。これは、構造が不適切なJSONです(またはそうでした)。配列ではない配列に加えて、必要と思われない余分なレベルのオブジェクトがあります。JSON を生成している場合は、代わりに次のようにするとより理にかなっています。
{
"nodes": [
{ "title": "test", "field2": "test2" },
{ "title": "test3", "field2": "test4" }
]
}
OK、JSON データが次のようになったので更新します。しかし、あなたが投稿したものは有効な JSON ではありません! これは、コンソールまたはテスト コードで機能する JavaScript オブジェクトですが、 JSON バリデーターを渡しません。プロパティ名は本来あるべきように引用されておらず;
、末尾に a があります。次のようになります。
{
"nodes": [
{ "title": "test" },
{ "title": "test2" },
{ "title": "test3" },
{ "title": "test4" }
]
}
(間隔とインデントは問題ではありません。わかりやすくするためにこのようにフォーマットしました。)
とにかく、それを修正すると、このコードは現在のデータで正常に機能します。
$.each( data.nodes, function( index, node ) {
console.log( node.title );
});
存在しないものをチェックする代わりに、実際の配列for
の長さをチェックすると、ループは正常に機能します。nodes
data.length
var nodes = data.nodes;
for( var i = 0, len = nodes.length; i < len; i++ ) {
var node = nodes[i];
console.log( node.title );
}
のようなものではなく、このコード (nodes
およびnode
変数) のように、ネストされたオブジェクトへの参照を取得することをお勧めしますdata.nodes[i]
。追跡するのがはるかに簡単で、効率も向上します (ただし、この単純なケースでは違いはありません)。