获取 JSON 对象的大小

2022-08-30 00:15:54

我有一个由AJAX请求返回的JSON对象,我遇到了一些问题,因为它不断返回。只是想知道我是否正确地使用它:.lengthundefined

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

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

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

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

答案 1

你可以使用类似这样的东西

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

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

答案 2

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

  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可能如下所示