Json Object Array Length - PullRequest
       2

Json Object Array Length

10 голосов
/ 07 апреля 2011

Я работаю с некоторым Json, который похож на:

{ 
   "Apps" : [
   { 
     "Name" : "app1",
     "id" : "1",
     "groups" : [ 
       { "id" : "1", "name" : "test group 1", "desc" : "this is a test group" },
       { "id" : "2", "name" : "test group 2", "desc" : "this is another test group" } 
     ]
   }
   ]
}

Если я проанализирую его в jquery, чтобы вернуть объект, и я перебираю приложения следующим образом:

$.each(myJsonObject.Apps, function() { ... };

Как узнать длину this.groups?

Я пробовал

  • this.groups.length
  • this.groups.length()
  • $ (this) .groups.length ()

, и я не могу найти какой-либо достойной документации по объектам json с несколькими уровнями, которые содержат полезную информацию.

Будем благодарны за любые ссылки, примеры или предложения.

Ответы [ 6 ]

19 голосов
/ 08 апреля 2011

Попробуйте:

$.each(myJsonObject.Apps, function(i, obj) { ... });

obj.Groups.length;
4 голосов
/ 08 апреля 2011

Javascript чувствителен к регистру. Измените this.Groups.length на this.groups.length.

Этот код должен работать:

$.each(myJsonObject.Apps, function() { 
   alert(this.groups.length);
}); 

У меня есть рабочий пример на JSFiddle

Чтобы избежать подобных проблем, вы должны использовать постоянную заглавную букву. В Javascript принято использовать camelCase.

2 голосов
/ 08 апреля 2011

это хорошо работает:

HTML:

<span id="result"></span>

JS:

var myJsonObject = 
{ 
   "Apps" : [
   { 
     "Name" : "app1",
     "id" : "1",
     "groups" : [ 
       { "id" : "1", "name" : "test group 1", "desc" : "this is a test group" },
       { "id" : "2", "name" : "test group 2", "desc" : "this is another test group" } 
     ]
   }
   ]
};

$.each(myJsonObject.Apps, function(i, el) { 
    $("#result").html(el.groups.length);
});

пример

0 голосов
/ 15 мая 2016

Попробуйте это

import org.json.JSONObject;

JSONObject myJsonObject = new JSONObject(yourJson);
int length = myJsonObject.getJSONArray("groups").length();
0 голосов
/ 07 января 2014

Попробуйте это: function objectCount (obj) {

objectcount = 0;
$.each(obj, function(index, item) {
    objectcount = objectcount + item.length;
});
return objectcount;
}
objectCount(obj);

где obj - это объект json с массивом json в качестве подобъектов

0 голосов
/ 07 апреля 2011

Похоже, в вашем коде просто опечатка.JavaScript чувствителен к регистру, поэтому groups равен , а не так же, как Groups.

Если ваш объект JSON имеет groups во всех строчных буквах, как в вашем примере, тогда вы тольконеобходимо использовать this.groups.length внутри итерационной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...