获取 JSON 对象的大小

IT技术 javascript json
2021-02-10 04:19:32

我有一个由 AJAX 请求返回的 JSON 对象,我遇到了一些问题,.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"}}}
6个回答

你可以使用这样的东西

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

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

很高兴看到不需要 JSON 来嵌套数组的解决方案。我认为 JSON 的全部意义在于让一切都成为一个对象。
2021-03-31 04:19:32
@OlofuMark 虽然不需要支持这些版本,但开发人员应该知道他们生成的代码何时不适用于某些版本,以便他们可以决定是否考虑这一点。
2021-04-03 04:19:32
@OlofuMark 并非每个人都可以选择他们使用的浏览器(例如,锁定网络、内部应用程序使用的版本化 IE DLL 依赖项)。如果适应过时的浏览器需要付出很大的努力,那么忽略它们是有道理的,但在这种微不足道的情况下,不这样做是不礼貌的
2021-04-06 04:19:32
@Matt,并不是每个代码都必须在 IE 7 或 8 中工作。这些受到保护的不充分或非标准平台只是缺点。
2021-04-13 04:19:32
这是获取 json 对象长度的绝佳解决方案
2021-04-14 04:19:32

您的问题是您的手机对象没有 length 属性(除非您在返回的 JSON 中的某处定义它),因为对象与数组不同,即使用作关联数组也是如此。如果phones 对象是一个数组,它就会有一个长度。您有两个选择(可能更多)。

  1. 更改您的 JSON 结构(假设这是可能的),以便 'p​​hones' 变成

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

考虑到我的 JSON 对象存储在一个名为 jsonObject 的变量中,并且我具有与上述相同的 JSON:"phones":[{"number":"XXXXXXXXXXX",我将如何使用第一个解决方案获取 JSON 对象的长度,"type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]
2021-03-28 04:19:32

您无需更改 JSON 格式。

代替:

console.log(data.phones.length);

和:

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

考虑使用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 对象。如果你执行上面的语句,它会给你一个错误'Unexpected token o in Json'。要计算json的长度,您可以直接执行var length= Object.keys(json).length。
2021-03-19 04:19:32