javascript 获取JSON对象的大小

0ejtzxu1  于 2023-05-21  发布在  Java
关注(0)|答案(9)|浏览(117)

我有一个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"}}}
dphi5xsq

dphi5xsq1#

你可以用这个

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

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

yyhrrdl82#

你的问题是你的phones对象没有length属性(除非你在你返回的JSON中的某个地方定义了它),因为对象和数组不一样,即使用作关联数组。如果phones对象是一个数组,它将有一个长度。你有两个选择(也许更多)。
1.改变你的JSON结构(假设这是可能的),使'电话'成为

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

(note每个音素没有单词编号的标识符,因为它们是在0索引数组中返回的)。在此响应中,phones.length将有效。
1.遍历包含在你的电话对象中的对象,并在你去的时候计算它们,例如。

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

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

x8diyxa7

x8diyxa73#

您不需要更改JSON格式。
替换:

console.log(data.phones.length);

其中:

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

ncgqoxb04#

考虑使用underscore.js。它将允许您检查大小,即。就像这样

var data = {one : 1, two : 2, three : 3};
_.size(data);
//=> 3
_.keys(data);
//=> ["one", "two", "three"]
_.keys(data).length;
//=> 3
dddzy1tm

dddzy1tm5#

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
wsewodh2

wsewodh26#

试试这个

$.parseJSON(data).length
n7taea2i

n7taea2i7#

用这个
Object.keys(jsonObject).length

55ooxyrt

55ooxyrt8#

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

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

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

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

ubbxdtey9#

$(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);
    });
});

相关问题