获取json对象的大小

nkc*_*cmr 224 javascript json

我有一个json对象,由AJAX请求返回,我遇到了一些麻烦,.length因为它一直在返回undefined.只是想知道我是否正确使用它:

console.log(data.length);
console.log(data.phones.length);
Run Code Online (Sandbox Code Playgroud)

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

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

{"reqStatus":true,"phones":{"one":{"number":"XXXXXXXXXX","type":"mobile"},"two":{"number":"XXXXXXXXXX","type":"mobile"}}}
Run Code Online (Sandbox Code Playgroud)

小智 522

你可以使用这样的东西

<script type="text/javascript">

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

  var count = Object.keys(myObject).length;
  console.log(count);
</script>
Run Code Online (Sandbox Code Playgroud)

  • @Matt,每个代码都不是必须在IE 7或8中工作.这些不合适或非标准平台受到保护只是缺点. (60认同)
  • @OlofuMark虽然不需要支持这些版本,但开发人员应该知道他们生成的代码何时不能在某些版本上运行,以便他们可以决定是否考虑这些. (7认同)
  • @OlofuMark并非所有人都可以选择他们正在使用的浏览器(例如,锁定网络,内部应用程序使用的版本化IE DLL依赖项).如果适应过时的浏览器需要付出很大的努力,那么忽略它们是合理的,但在这样一个微不足道的情况下,这样做是不礼貌的. (5认同)

tom*_*umb 53

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

1)更改您的JSON结构(假设这是可能的),以便'手机'成为

"phones":[{"number":"XXXXXXXXXX","type":"mobile"},{"number":"XXXXXXXXXX","type":"mobile"}]
Run Code Online (Sandbox Code Playgroud)

(注意,每个手机没有字号编号,因为它们是在0索引数组中返回的).在此回复phones.length将是有效的.

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

var key, count = 0;
for(key in data.phones) {
  if(data.phones.hasOwnProperty(key)) {
    count++;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您只定位新浏览器,则选项2可能如下所示


小智 29

考虑使用underscore.js.它将允许您检查大小,如下所示:

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


kkk*_*kkk 23

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

更换:

console.log(data.phones.length);
Run Code Online (Sandbox Code Playgroud)

有:

console.log( Object.keys( data.phones ).length ) ;
Run Code Online (Sandbox Code Playgroud)


小智 16

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
Run Code Online (Sandbox Code Playgroud)

  • 这是一个已解析的json对象。如果执行上述语句,则会给您一个错误“ Json中的意外令牌o”。为了计算json的长度,您可以直接执行var length = Object.keys(json).length。 (2认同)

小智 5

尝试这个

$.parseJSON(data).length
Run Code Online (Sandbox Code Playgroud)