web-dev-qa-db-ja.com

JSONオブジェクト配列の長さ

私は次のような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オブジェクトに関する適切なドキュメントを見つけることができません。

リンク、例、または提案をいただければ幸いです。

10
Patrick

試してください:

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

obj.Groups.length;
19
mattsven

JavaScriptは大文字と小文字を区別します。変化する this.Groups.lengthからthis.groups.length

このコードは機能するはずです:

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

JSFiddle の実用的な例があります

この種の問題を回避するには、一貫した大文字を使用する必要があります。 JavaScriptでは、キャメルケースを使用するのが一般的です。

4
Peter Olson

これはうまくいきます:

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);
});

2
andres descalzo

これを試して

import org.json.JSONObject;

JSONObject myJsonObject = new JSONObject(yourJson);
int length = myJsonObject.getJSONArray("groups").length();
0

これを試してください:function objectCount(obj){

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

ここで、objはサブオブジェクトとしてjson配列を持つjsonオブジェクトです

0
Karthick Kumar

コードに単純なタイプミスがあるようです。 JavaScriptは大文字と小文字を区別するので、groupsnotGroupsと同じです。

JSONオブジェクトに、例のようにすべて小文字のgroupsが含まれている場合は、反復関数内でthis.groups.lengthを使用するだけで済みます。

0
Dominic Barnes