1

我环顾四周,我知道信息就在那里,但我完全不知道如何做到这一点。我只需要从 Facebook 的 Graph API 上的 json 数据文件中提取名称。这是 json 数据的示例。

    {
   "id": "POSTID",
   "created_time": "2013-09-20T20:20:52+0000",
   "comments": {
      "data": [
         {
            "from": {
               "name": "XXXXXXX",
               "id": "XXXXXXX"
            },
            "id": "XXXXXXX"
         },
         {
            "from": {
               "name": "XXXXXXX",
               "id": "XXXXXXX"
            },
            "id": "XXXXXXX"
         }

我只需要在电子表格中获取名称。我怎样才能做到这一点?非常感谢您的时间。

4

2 回答 2

0

我编写了一个 Excel 插件 (XLL),它将 JSON 从 Facebook Graph API 直接提取到 Excel 中。它在 GitHub 上可用:

https://github.com/spreadgit/XLfacebook

于 2014-05-24T09:44:36.460 回答
0

好的,基于上面的评论讨论,我提出了一个示例,使用 jQuery 和JSONSelect作为 JSON 询问器,从 Facebook Graph API - 评论流中提取名称。

jsFiddle:http: //jsfiddle.net/9nqu6/1/

检索到提要后,所有工作都由 JSONSelect 完成,使用选择器选择'.comments .data .from .name'提要中所需的级别。

.forEach()命令允许通过回调对结果进行迭代,这里只生成一个表和一个 CSV 文件(使用数据 URI,通过download属性在 Chrome 中设置文件名)。

注意。对此没有错误处理,因此请务必将正确类型的 URI 传递给它!例如。

https://graph.facebook.com/<postid>?fields=comments.limit(1000).fields(from)

jQuery

$('#read-graph').on('click', function() {
    var graphLink = $('#graph-link').val();

    if (!graphLink) {
        alert("Enter link");
        return false;
    }

    graphLink = graphLink + (/\?/.test(graphLink) ? "&" : "?") + "callback=?"
    $.getJSON(graphLink, function(data) {
        var nameBlock = $('#name-block');
        nameBlock.find('tr').remove();

        var csvData = "data:application/csv;charset=utf-8,Index%2CName%2C%0A";

        var cIndex = 0;
        JSONSelect.forEach('.comments .data .from .name', data, function(cName) {
            cIndex++;
            nameBlock.append('<tr><td class="index">' + cIndex + '</td><td class="name">' + cName + '</td></tr>');
            csvData = csvData + cIndex + "%2C" + encodeURIComponent('"' + cName.replace(/"/g, '""') + '"') + "%0A";
        });

        $('#download-csv').prop('href', csvData).attr('download', "FBGraph.csv").show();
    });

    return false;
});

HTML

<h3>Graph Link</h3>
<form>
    <input id="graph-link" name="graph-link" type="text" value="" />
    <input id="read-graph" name="read-graph" type="submit" value="Read Graph" />
    <a id="download-csv" href="#" style="display: none;">Download CSV</a>
</form>
<table id="name-block">
</table>

CSS

#graph-link {
    width: 400px;
}
#name-block {
    margin-top: 10px;
    border: 1px solid black;
    border-collapse: collapse;
}
#name-block tr {
    border-top: 1px dashed black;
}
#name-block .index {
    width: 50px;
}
#name-block .name {
    width: 350px;
    border-left: 1px solid black;
}
于 2013-09-25T20:44:51.960 回答