2

次のように、API 呼び出しから返された json 配列があります。

["meta", {"previous"=>nil, "total_count"=>12, "offset"=>0, "limit"=>1, "next"=>"/v1/Account/MAMTE4MTHJNJRKODBIMD/AvailableNumberGroup/?prefix=415&limit=1&country_iso=US®ion=NY&offset=1"}]["api_id", "441d610c-bede-11e2-815d-22000abcc0e1"]["objects", [{"stock"=>57, "voice_enabled"=>true, "region"=>"New York, UNITED STATES", "voice_rate"=>"0.00900", "prefix"=>"631", "sms_rate"=>"0.00800", "number_type"=>"local", "setup_rate"=>"0.00000", "rental_rate"=>"0.80000", "group_id"=>"11411650673450", "sms_enabled"=>true, "resource_uri"=>"/v1/Account/MAMTE4MTHODBIMD/AvailableNumberGroup/11411650673450/"}]]

これで配列全体を印刷できます

success: function(response){
             $.each([response], function(i, objects) {
             var list = "<li>" + objects + "</li>";
             $('#result').append(list);
             });

<li> .. </li>指定された項目を抽出して 内に出力し、すべてではなく一部の要素のリストを作成するにはどうすればよいですか?

どうもありがとう!

4

4 に答える 4

1

object 内の各オブジェクトに対して 1 つと、 objectobjects[]の各<key, value>ペアに対して1 つの、2 回の反復が必要です。

たとえば、このデモでは、 http://plivo.com/docs/api/numbers/availablenumbergroup/の例を使用しています

var jsonResponse = '{"meta": {"previous": null, "total_count": 1, "offset": 0, "limit": 20, "next": null }, "api_id": "26590c12-5831-11e1-86da-6ff39efcb949", "objects": [{"voice_enabled": true, "voice_rate": "1.1"}, {"voice_enabled": false, "voice_rate": "1.2"} ] }';

$('#simulateAjax').on('click', function() {
    // cannot make call due to cross-domain security (and the API URL is unknown!) so just fake call the success function with valid JSON
/*    $.ajax({
      url: 'test.html',
      dataType: 'json'
    }).done(success);
*/
    success($.parseJSON(jsonResponse));

    function success(response) {
        var items = '';
        $.each(response.objects, function(index, obj) {
            // obj here is one "object", we need to iterate the contents of each "obj"

            $.each(obj, function(k, v) {
                // k here is the key
                // v is the value
                items += '<li>' + k + ' : ' + v + '</li>';
            });
        });
        $('#result').append(items);
    }
    return false;
});

生成する

  • voice_enabled : 真
  • 音声レート: 1.1
  • voice_enabled : false
  • 音声レート: 1.2

注: デモ用に各オブジェクトのほとんどのプロパティを削除しました。また、jQuery は$.parseJson()応答で自動的に呼び出されます。そのため、手動で呼び出しています。

オブジェクトを 1 つのオブジェクトに表示する場合は、外側のループで<li>を構築し、内側の にkvを追加してから、次のように afterを閉じる必要があります。<li>$.each()</li>

var item = '<li>';

$.each(obj, function(k, v) {
    item += k + ' : ' + v + ', ';
});

item += '</li>';
items += item;
于 2013-05-17T12:49:45.790 に答える