获取JSON对象的大小

我有一个JSON对象,由AJAX请求返回,我有一些问题与.length,因为它一直返回undefined。只是想知道我是否用对了:

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

它们都返回undefined,尽管它们是有效对象。

< p > 更新: < br > 返回的JSON对象示例:

{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
791350 次浏览

您的问题是,电话对象没有长度属性(除非您在返回的JSON中定义了它),因为对象与数组不相同,即使用作关联数组。如果电话对象是一个数组,它将有一个长度。你有两个选择(也许更多)。

  1. 改变JSON结构(假设这是可能的),使'phones'变成

    "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++;
    }
    }
    

If you're only targeting new browsers option 2 could look like this

你可以用这样的东西

var myObject = {'name':'Kasun', 'address':'columbo','age': '29'}


var count = Object.keys(myObject).length;
console.log(count);

考虑使用underscore.js。它将允许你检查大小,如:

var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3
$(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);
});
});
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 ) ;

用这个

种(jsonObject) . length

试试这个

$.parseJSON(data).length