2015-06-25 37 views
1

我是新来的JSON,我试图返回我的Facebook相册的列表:解析Facebook的图形API JSON的HTML

从Facebook
$(document).ready(function() { 
    $.getJSON("https://graph.facebook.com/me/photos?fields=id,name&access_token=MY TOKEN", function (data) { 
     var items = []; 
     $.each(data, function (key, val) { 
      items.push("<li id='" + key + "'>" + val + "</li>"); 
     }); 

     $("<ul/>", { 
      "class": "my-new-list", 
      html: items.join("") 
     }).appendTo(".results"); 
    }); 
}); 

JSON:

{ 
    "data": [ 
     { 
     "id": "10150589771916817", 
     "name": "Mobile Uploads", 
     "created_time": "2012-03-03T14:47:48+0000" 
     }, 
     { 
     "id": "41633726816", 
     "name": "Old pics", 
     "created_time": "2008-08-18T21:44:29+0000" 
     } 
    ], 
    "paging": { 
     "cursors": { 
     "after": "NDE2MzM3MjY4MTY=", 
     "before": "MTAxNTA1ODk3NzE5MTY4MTc=" 
     } 
    } 
} 

[object Object]被退回每个项目在我的HTML。我究竟做错了什么?

回答

1

首先,响应中有一个名为data的数组,因此您需要循环使用data.data

其次,在你的例子中key将是迭代的整数索引,而value将是数组中的整个对象。您需要明确地访问该数组的属性。试试这个:

// Your retrieved JSON data... 
 
var data = { 
 
    "data": [{ 
 
     "id": "10150589771916817", 
 
     "name": "Mobile Uploads", 
 
     "created_time": "2012-03-03T14:47:48+0000" 
 
    }, { 
 
     "id": "41633726816", 
 
     "name": "Old pics", 
 
     "created_time": "2008-08-18T21:44:29+0000" 
 
    }], 
 
    "paging": { 
 
     "cursors": { 
 
      "after": "NDE2MzM3MjY4MTY=", 
 
      "before": "MTAxNTA1ODk3NzE5MTY4MTc=" 
 
     } 
 
    } 
 
} 
 

 
// inside your AJAX request callback... 
 
var items = []; 
 
$.each(data.data, function (i, obj) { 
 
    items.push('<li id="' + obj.id + '">' + obj.name + '</li>'); 
 
}); 
 

 
$('<ul/>', { 'class': 'my-new-list' }).append(items).appendTo('.results');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div class="results"></div>

+0

谢谢。我知道我在阅读json格式时会出错。现在我明白了很多。谢谢! –

+0

没问题,很乐意帮忙 –

+0

我如何在JSON中钻取另一个级别?说出数据中是否有图像:“data”:[“images”:[]]? –

1

响应包含一个名为数组,卢普认为数据数组,然后你可以抢在第二循环的关键和Val。

这样做,您可以访问密钥和val。

var fbResponse = { 
 
    "data": [{ 
 
     "id": "10150589771916817", 
 
      "name": "Mobile Uploads", 
 
      "created_time": "2012-03-03T14:47:48+0000" 
 
    }, { 
 
     "id": "41633726816", 
 
      "name": "Old pics", 
 
      "created_time": "2008-08-18T21:44:29+0000" 
 
    }], 
 
     "paging": { 
 
     "cursors": { 
 
      "after": "NDE2MzM3MjY4MTY=", 
 
       "before": "MTAxNTA1ODk3NzE5MTY4MTc=" 
 
     } 
 
    } 
 
}; 
 

 

 
$.each(fbResponse.data, function (index, item) { 
 
    $.each(item, function (key, val) { 
 
     alert("Index=" + index + ", key=" + key + ", val=" + val); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

1

使用jQuery当你循环数组你得到指数

$.each([ 10, 20 ], function(index, value) { 
    alert(index + ": " + value); 
}); 

输出:

0: 10 
0: 20 

如果你迭代集合你关键

var obj = { 
    "key 1": "value 1", 
    "key 2": "value 2" 
}; 
$.each(obj, function(key, value) { 
    alert(key + ": " + value); 
}) 

输出:

key 1: value 1 
key 2: value 2