我需要从我的json FB文件中获取所有数据。 例如,一些插入,很少的字段有“喜欢”,但其他字段没有。 我需要检查“喜欢”字段是否存在
我的数据的一个例子是:
{
"userdata":
[
{
"id": "xxxxxxxxxxxxxxxxxxxx",
"from": {
"name": "my name",
"id": "xxxxxxxxxxxxxxxxxxxx"
},
"message": "Hello",
"actions": [
{
"name": "Comment",
"link": "https://www.facebook.com/"
},
{
"name": "Like",
"link": "https://www.facebook.com/"
}
],
"privacy": {
"description": "Friends",
"value": "ALL_FRIENDS",
"friends": "",
"networks": "",
"allow": "",
"deny": ""
},
"type": "status",
"status_type": "mobile_status_update",
"application": {
"name": "Graph API Explorer",
"id": "xxxxxxxxxxxxxxxxxxxx"
},
"created_time": "2013-12-25T15:22:43+0000",
"updated_time": "2013-12-25T15:22:43+0000",
**"likes"**: {
"data": [
{
"id": "xxxxxxxxxxxxxxxxxxxx",
"name": "friend1"
},
{
"id": "xxxxxxxxxxxxxxxxxxxx",
"name": "friend2"
}
],
"paging": {
"cursors": {
"after": "xxxxxxxxxxxxxxxxxxxx==",
"before": "xxxxxxxxxxxxxxxxxxxx=="
}
}
}
},
{
"id": "xxxxxxxxxxxxxxxxxxxx",
"from": {
"name": "name3",
"id": "xxxxxxxxxxxxxxxxxxxx"
},
"to": {
"data": [
{
"name": "my name",
"id": "xxxxxxxxxxxxxxxxxxxx"
}
]
},
"message": "hello again! ",
"actions": [
{
"name": "Comment",
"link": "https://www.facebook.com/xxxxxxxxxxxxxxxxxxxx"
},
{
"name": "Like",
"link": "https://www.facebook.com/xxxxxxxxxxxxxxxxxxxx"
}
],
"privacy": {
"value": ""
},
"type": "status",
"application": {
"name": "Facebook for iPad",
"namespace": "fbipad_",
"id": "xxxxxxxxxxxxxxxxxxxx"
},
"created_time": "2013-12-17T20:34:04+0000",
"updated_time": "2013-12-17T20:34:04+0000"
}
]
}
我使用以下代码,但我只获得第一次插入而不是两者都是因为第二次没有“喜欢”字段。
<script>
$(document).ready(function(){
});
$("#loaduserdata").click(function(){
$("#userdata tbody").html("");
$.getJSON("js.json", function(data){
$.each(data.userdata, function(i,user){
var tblRow =
"<tr>"
+"<td>FEED FROM: "+user.from.name+"</td>"
+"<td>MESSAGE: "+user.message+"</td>"
+"<td>created_time: "+user.created_time+"</td>"
+"<td>updated_time: "+user.updated_time+"</td>"
+ "<td>LIKES TO" + (typeof user.likes.data == "undefined" ? "" : user.likes.data.map(function(item) { return " "+item.name; }).join(", ")) + "</td>"
+"</tr>"
$(tblRow).appendTo("#userdata tbody");
});
}
);
});
</script>
请帮助。
答案 0 :(得分:0)
您忘记检查user.likes是否存在并且仅检查user.likes.data,但该检查已经引发错误,因为您尝试访问未定义对象的属性数据。
function getLikesFromUser(user) {
if (user.likes && user.likes.data) {
return user.likes.data.map(function(item) {
return item.name;
}).join(", ");
} else {
return "";
}
}