私は次のような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
の長さを取得するにはどうすればよいですか?
私はもう試した
そして、良い情報を持つ複数の層のjsonオブジェクトに関する適切なドキュメントを見つけることができません。
リンク、例、または提案をいただければ幸いです。
試してください:
$.each(myJsonObject.Apps, function(i, obj) { ... });
obj.Groups.length;
JavaScriptは大文字と小文字を区別します。変化する this.Groups.length
からthis.groups.length
。
このコードは機能するはずです:
$.each(myJsonObject.Apps, function() {
alert(this.groups.length);
});
JSFiddle の実用的な例があります
この種の問題を回避するには、一貫した大文字を使用する必要があります。 JavaScriptでは、キャメルケースを使用するのが一般的です。
これはうまくいきます:
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);
});
これを試して
import org.json.JSONObject;
JSONObject myJsonObject = new JSONObject(yourJson);
int length = myJsonObject.getJSONArray("groups").length();
これを試してください:function objectCount(obj){
objectcount = 0;
$.each(obj, function(index, item) {
objectcount = objectcount + item.length;
});
return objectcount;
}
objectCount(obj);
ここで、objはサブオブジェクトとしてjson配列を持つjsonオブジェクトです
コードに単純なタイプミスがあるようです。 JavaScriptは大文字と小文字を区別するので、groups
はnotはGroups
と同じです。
JSONオブジェクトに、例のようにすべて小文字のgroups
が含まれている場合は、反復関数内でthis.groups.length
を使用するだけで済みます。