获取json对象的大小

我有一个json对象,得到由AJAX请求返回,我有一些麻烦的.length因为它保持返回undefined 。 只是想知道我是否正确使用它:

 console.log(data.length); console.log(data.phones.length); 

即使它们是有效的对象,它们也都返回undefined

更新:
返回的JSON对象的示例:

 {"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}} 

你可以使用这样的东西

 <script type="text/javascript"> var myObject = {'name':'Kasun', 'address':'columbo','age': '29'} var count = Object.keys(myObject).length; console.log(count); </script> 

你的问题是你的手机对象没有length属性(除非你在JSON中的某个地方定义它),因为对象与数组不一样,即使用作关联数组也是如此。 如果手机对象是一个数组,它会有一个长度。 你有两个select(也许更多)。

1)改变你的JSON结构(假设这是可能的),使'手机'成为

 "phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}] 

(请注意,每个电话没有字母编号的标识符,因为它们是在0索引数组中返回的)。 在这个响应中, phones.length将是有效的。

2)遍历你的手机对象中包含的对象,并计算它们,例如

 var key, count = 0; for(key in data.phones) { if(data.phones.hasOwnProperty(key)) { count++; } } 

如果你只针对新的浏览器选项2可能看起来像这样

考虑使用underscore.js 。 它可以让你检查大小,就像这样:

 var data = {one : 1, two : 2, three : 3}; _.size(data); //=> 3 _.keys(data); //=> ["one", "two", "three"] _.keys(data).length; //=> 3 
 var json=[{"id":"431","code":"0.85.PSFR01215","price":"2457.77","volume":"23.0","total":"565.29"},{"id":"430","code":"0.85.PSFR00608","price":"1752.45","volume":"4.0","total":"70.1"},{"id":"429","code":"0.84.SMAB00060","price":"4147.5","volume":"2.0","total":"82.95"},{"id":"428","code":"0.84.SMAB00050","price":"4077.5","volume":"3.0","total":"122.32"}] var obj = JSON.parse(json); var length = Object.keys(obj).length; //you get length json result 4 

你不需要改变你的JSON格式。

更换:

 console.log(data.phones.length); 

有:

 console.log( Object.keys( data.phones ).length ) ; 

使用这一个

 //for getting length of object int length = jsonObject.length(); 

要么

 //for getting length of array int length = jsonArray.length(); 
 $(document).ready(function () { $('#count_my_data').click(function () { var count = 0; while (true) { try { var v1 = mydata[count].TechnologyId.toString(); count = count + 1; } catch (e) { break; } } alert(count); }); });