2016-12-16 49 views
-3

要重复这样的JSON的:我如何循环访问JSON对象的jQuery

{ 
    "object": { 
    "array1": { 
     "id": 1 
    }, 
    "array2": { 
     "id": 2 
    } 
    } 
} 

我已经尝试使用这样的:

for (var i in dictionary) { 
    console.log(dictionary[i].id); 
} 

,但不起作用。

+6

难道人不读的文档和教程了吗? https://learn.jquery.com/using-jquery-core/iterating/ – epascarello

+0

https://jsfiddle.net/jzxe1a6b/ – timo

+0

@epascarello重新开放,因为现在很清楚。 –

回答

0

我到处找,找不到我想要的答案。认真吗?没有看到$.each做什么?

泛型迭代器函数,可用于无缝遍历对象和数组。具有长度属性的数组和类似数组的对象(例如函数的参数对象)通过数字索引迭代,从0到length-1。其他对象通过它们的命名属性进行迭代。

var arr = { 
 
    "object": { 
 
    "array1": { 
 
     "id": 1 
 
    }, 
 
    "array2": { 
 
     "id": 2 
 
    } 
 
    } 
 
}; 
 
$.each(arr, function (i, v) { 
 
    console.log(i); 
 
    console.log(v); 
 
    $.each(v, function (idx, val) { 
 
    console.log(idx); 
 
    console.log(val); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

AJAX

如果您正在使用AJAX来获取JSON,你可以很好的使用方法:$.getJSON

$.getJSON("https://cdn.rawgit.com/fge/sample-json-schemas/master/avro/avro-schema.json", function (res) { 
 
    $.each(res, function (i, v) { 
 
    console.log(i); 
 
    console.log(v); 
 
    if (typeof v == "object") 
 
    $.each(v, function (idx, val) { 
 
     console.log(idx); 
 
     console.log(val); 
 
    }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+1

您的作品,@Craigs没有。 – decryptable

+1

我会尽我所能接受。 – decryptable

+0

@decryptable谢谢。 –

-1
var objectData = { 
    "object": { 
    "array1": { 
     "id": 1 
    }, 
    "array2": { 
     "id": 2 
    } 
    } 
}; 

$.each(objectData, function(key, data){ 
    // Do stuff here 
}); 

要从网址使用JSON使用:

$.ajax({ 
    url: URL, 
    dataType: 'jsonp', 
    success: function(json) { 
     $.each(json, function(key, data){ 
      console.log(key); 
      console.log(data); 
     }); 
    } 
}); 
+0

我会给这个一个去。 – decryptable

+0

对不起,我刚刚编辑它 – Craig

+0

@克雷格你为什么不给它一个解释? –

-1

请尝试以下

var d={ 
    "object": { 
    "array1": { 
     "id": 1 
    }, 
    "array2": { 
     "id": 2 
    } 
    } 
} 

$.each(d,function(i,v){console.log(i,v)}) 
+2

另一个LQ答案没有任何解释。比前两个答案更糟糕。 –