无法从Hacker News API调用JSON数据

时间:2017-12-06 06:41:43

标签: javascript json api hacker-news

我正在尝试使用Hacker News API,我可以调用API并发出获取故事的请求。根据他们的API文档,源URL必须包含访问故事内容的ID(必需),我在控制台中获取正确的URL并单击URL提供适当的JSON但超出此范围我无法使用/调用JSON内容,如作者姓名,职称等。

JS CODE:

var records;
var userRecords;
var fileJson;
var startRequest = new XMLHttpRequest();
var sourceUrl = "https://hacker-news.firebaseio.com/v0/";
var sourceUrlAdd = "showstories.json";
var finalURL = sourceUrl + sourceUrlAdd;

startRequest.open("GET",finalURL);
startRequest.onload = function() {
    fileJson = JSON.parse(startRequest.responseText);
    for(var i = 0 ; i < fileJson.length; i++) {
        userRecords = sourceUrl + fileJson[i] + ".json";
    }
}
startRequest.send();

如何让它发挥作用?

1 个答案:

答案 0 :(得分:2)

查看以下信息:GitHub

循环中的网址应修改为:

    for(var i = 0 ; i < fileJson.length; i++) {
       userRecords = sourceUrl + "/item/" + fileJson[i] + ".json";
    }

您的代码看起来并不完整,因为如果要存储它们,循环将只覆盖每次迭代的userRecords:

    userRecords = [];
    for(var i = 0 ; i < fileJson.length; i++) {
       userRecords.push(sourceUrl + "/item/" + fileJson[i] + ".json");
    }

上面会给你一个填充了所有结果的数组。

例如,这是userRecords数组中第一项的内容:

    {"by":"ntrippar"
    ,"descendants":45
    ,"id":15853345
    ,"kids"[15858055,15854752,15856479,15854664,15858253,15856298,15854305,15855332,15858118,15857061,15854116]
    ,"score":159
    ,"time":1512494533
    ,"title":"Show HN: SeKey: An SSH Agent for OS X, Using Secure Enclave and TouchID, in Rust"
    ,"type":"story"
    ,"url":"https://github.com/ntrippar/sekey"}

如果您解析上述内容,它将转换为一个对象。