我正在尝试从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"
}
}
...
}
我一直在尝试很多东西,但我似乎无法访问文件名。这是因为'files'对象不是列表,而是键值对,其中键标识符与文件名本身匹配。
我尝试过的事情包括
filename = files[0]['filename']
filename = files[0].filename
filename = files['filename']
坦率地说,唯一有效的方法是filename = files['firstpost.md']['filename']
的变体,但这是无效的,因为我事先无法知道文件名。
我确信可以访问文件名,但是已经花了很长时间测试不同的方法。帮助将不胜感激!
答案 0 :(得分:4)
您可以使用for (var key in object) {}
,以下是使用api call中数据的示例:
var filenames = [];
for (var filename in data[0].files) {
filenames.push(filename);
}
console.log(filenames); // ["firstpost.md"]
答案 1 :(得分: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
<强>更新强>
Another example使用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
}