Подсчет ключей/значений в JSON

Возможный дубликат:
Длина ассоциативного массива Javascript

У меня есть JSON, который выглядит так:

Object:
   www.website1.com : "dogs"
   www.website2.com : "cats"
   >__proto__ : Object

Это печатает, когда я это делаю:

console.log(obj);

Я пытаюсь получить количество элементов внутри этого JSON, obj.length возвращает "undefined" и obj [0].length возвращает

Uncaught TypeError: Не удается прочитать длину свойства undefined

Я ожидаю, что длина вернет "2" в этом случае. Как найти счет?

Спасибо!

Ответ 1

Вы должны сами их подсчитать:

function count(obj) {
   var count=0;
   for(var prop in obj) {
      if (obj.hasOwnProperty(prop)) {
         ++count;
      }
   }
   return count;
}

Хотя теперь, когда я увидел первый комментарий к этому вопросу, на этой странице есть гораздо более приятный ответ. Однострочный, возможно, так же быстро, если не быстрее:

function count(obj) { return Object.keys(obj).length; }

Помните, что поддержка Object.keys() пока еще не кросс-браузер.

Ответ 2

.length работает только с массивами, а не с объектами.

var count = 0;
for(var key in json)
    if(json.hasOwnProperty(key))
        count++;