如何使用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
,并且仍然可以通过索引访问成员。