如何使用JSON.parse查找JSON的长度?

我有一个像这样的Json {"0":{"parent_id":1649,"id":"1803","last_update_on":"2010-12-24 07:01:49","message":"dhb;lxd","created_by_id":"21","created_by_name":"Amol Deshpande"}} 。 理想情况下,我应该将长度设为1,因为我在第0个位置只有1个值。

如果我有这样的JSON怎么办?

 {"0":{"parent_id":1649,"id":"1803","last_update_on":"2010-12-24 07:01:49","message":"dhb;lxd","created_by_id":"21","created_by_name":"Amol Deshpande"},"1":{"parent_id":1649,"id":"1804","last_update_on":"2010-12-24 07:02:49","message":"amol","created_by_id":"21","created_by_name":"Amol Deshpande"}} 

如果我发出警报,我会得到未定义的值(response.length); 响应是我的JSON,如上所述

有什么建议?

对象没有.length属性…不是你想的那样(它是undefined ),它的数组是这样的,要得到一个长度,你需要计算键,例如:

 var length = 0; for(var k in obj) if(obj.hasOwnProperty(k)) length++; 

或者,使用大多数浏览器上可用的keys集合 :

 var length = obj.keys.length; 

MDC为尚未拥有.keys浏览器提供了一个实现 :

 Object.keys = Object.keys || function(o) { var result = []; for(var name in o) { if (o.hasOwnProperty(name)) result.push(name); } return result; }; 

或者,选项#3实际上使您的JSON成为一个数组,因为这些键看起来并不多,如下所示:

 [{"parent_id":1649,"id":"1803","last_update_on":"2010-12-24 07:01:49","message":"dhb;lxd","created_by_id":"21","created_by_name":"Amol Deshpande"},{"parent_id":1649,"id":"1804","last_update_on":"2010-12-24 07:02:49","message":"amol","created_by_id":"21","created_by_name":"Amol Deshpande"}] 

然后你可以像你想的那样使用.length ,并且仍然可以通过索引访问成员。