1

我正在尝试从 Github 的 API 获得的数据中检索 Github 上 gists 的文件名。我正在使用 javascript 来访问数据。

可以在此处找到示例结果:https ://api.github.com/users/blaercom/gists 。我还复制了以下数据的缩短版本。

{
  ...
  id: "4468273",
  files: {
    firstpost.md: {
      type: "text/plain",
      filename: "firstpost.md",
      size: 16,
      language: "Markdown"
    }
  }
  ...
}

我一直在尝试很多事情,但似乎无法访问文件名。这是因为“文件”对象不是一个列表,而是一个键值对,其中键标识符与文件名本身匹配。

我尝试过的事情包括

filename = files[0]['filename']
filename = files[0].filename
filename = files['filename']

坦率地说,唯一有效的方法是变体,filename = files['firstpost.md']['filename']但这是无效的,因为我事先无法知道文件名。

我确信可以访问文件名,但已经花了很长时间测试不同的方法。帮助将不胜感激!

4

2 回答 2

4

您可以使用for (var key in object) {},这是一个使用您的api 调用中的数据的示例:

var filenames = [];

for (var filename in data[0].files) {
   filenames.push(filename);
}

console.log(filenames); // ["firstpost.md"]
于 2013-01-06T17:43:43.923 回答
1

json这是一个使用您的回复的真实示例

var obj='your json data';
var fileNames=[];
for(var i in obj[0]['files'])
{
    var fileName=obj[0]['files'][i]['filename'];
    fileNames.push(fileName);
}
document.write(fileNames[0]); // firstpost.md

例子

更新:

另一个使用jsonp/script.

<script src="https://api.github.com/users/blaercom/gists?callback=myCallback"></script>

回调函数

function myCallback(o)
{
    var obj=o.data;
    var fileNames=[];
    for(var i in obj[0]['files'])
    {
        var fileName=obj[0]['files'][i]['filename'];
        fileNames.push(fileName);
    }
    document.write(fileNames[0]);  // firstpost.md
}
于 2013-01-06T17:56:57.200 回答