2

次のJSONオブジェクトがあります

var s = {
    "TenantGroupName": "Fun Holidays",
    "queue_details": [{
        "queue_key": "1",
        "channelId": "1",
        "queue_name": "North India Travel",
        "contacts": [{
            "from": "meenar@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "sagarm@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "kaushalk@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "kaushalk@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "8:05",
            "service_level_breached": "true",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "kaushalk@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "8:34",
            "service_level_breached": "true",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }]
    }, {
        "queue_key": "1",
        "channelId": "1",
        "queue_name": "South India Travel",
        "contacts": []
    }, {
        "queue_key": "1",
        "channelId": "1",
        "queue_name": "Summer 2012",
        "contacts": [{
            "from": "meenar@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "raheels@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "sagarm@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "kaushalk@interactcrm.com",
            "subject": "Redemption Coupon",
            "queue_time": "9:34",
            "service_level_breached": "true",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }]
    }, {
        "queue_key": "1",
        "channelId": "3",
        "queue_name": "Honeymoon",
        "contacts": [{
            "from": "Henry Williams",
            "subject": "New Zealand",
            "queue_time": "1:45",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }, {
            "from": "Linda Simpson",
            "subject": "Redemption Coupon",
            "queue_time": "2:34",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }]
    }, {
        "queue_key": "1",
        "channelId": "7",
        "queue_name": "Feedback_SMS",
        "contacts": [{
            "from": "@sanjeev",
            "subject": "Maldives",
            "queue_time": "1:45",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }]
    }, {
        "queue_key": "1",
        "channelId": "5",
        "queue_name": "Feedback_Twitter",
        "contacts": [{
            "from": "9833202859",
            "subject": "Wish to travel ...",
            "queue_time": "1:45",
            "service_level_breached": "false",
            "cduId": "4f8b9f2322c60106c0a800bd65cc0000",
            "contactPkey": "8903"
        }]
    }]
}

上記の JSON 配列をループしたい。私はJavascriptで次のように書いています

上記のJSONオブジェクトを次のようにJavascriptに渡しました

function CreateQueue(jString) {
    var jSonString = { "MyQueue": jString };
    alert(jSonString.MyQueue.length);
}

上記の関数アラート: undefined. 上記の JSON 文字列をループするにはどうすればよいですか?

4

4 に答える 4

9

このコンストラクト全体は配列ではなくオブジェクトであるため、それを呼び出すことはできません.length。また、まったく役に立たない追加のオブジェクトにラップする理由もわかりません。

オブジェクトのすべてのプロパティをループするには、次の手順を実行します。

for (var key in jString) {
   if (jString.hasOwnProperty(key) ){
       console.log( "key:"+key+", val:"+jString[key] );
   }
}

配列をループするには、次のようにします。

for (var i = 0; i < s.queue_details.length; i++){
  console.log( i+":"+s.queue_details[i] );
}
于 2012-04-27T14:57:56.087 に答える
5

クライアント側でjsonとXMLの解析/反復を操作するために私が見つけた最も簡単な方法は、スクリプトにjQueryを含めることです。

最初のキューの連絡先エントリをループし、エントリごとにフォーマットされたリンク出力を生成することを示す小さな例を作成しました。

jsFiddle JSON/jQueryの例。

本質的に難しい言葉はで世話をされます
$.each(json, function (index, item) { /*...*/ });

于 2012-04-27T15:18:21.680 に答える
1

上記のオブジェクトは、配列ではなくオブジェクトです。唯一の配列はs.queue_details. これを実行してループすることができます:

for (var i = 0; i < s["queue_details"].length; i++)
{
  var item = s["queue_details"][i];
  //do stuff with item
}
于 2012-04-27T14:54:16.433 に答える
0

プロパティを使用してオブジェクトの長さを取得することはできませんlength。配列のみです。.を使用して、オブジェクトを自分でループできますfor (x in y)

于 2012-04-27T14:54:21.417 に答える