Javascript 当keyname未知时,无法访问JSON中的元素
我试图从Github的API获取的数据中检索gists在Github上的文件名。我正在使用javascript访问数据 可以在此处找到一个示例结果:。我还复制了以下数据的缩短版本Javascript 当keyname未知时,无法访问JSON中的元素,javascript,json,Javascript,Json,我试图从Github的API获取的数据中检索gists在Github上的文件名。我正在使用javascript访问数据 可以在此处找到一个示例结果:。我还复制了以下数据的缩短版本 { ... id: "4468273", files: { firstpost.md: { type: "text/plain", filename: "firstpost.md", size: 16, language: "Markdown"
{
...
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']
的变体,但这是无效的,因为我事先不知道文件名
我确信可以访问文件名,但我已经花了相当长的时间测试不同的方法。谢谢你的帮助 您可以使用for(var key in object){}
,下面是一个使用您的
您可以将用于(对象中的var键){}
,下面是一个使用您的
下面是一个使用
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>
下面是一个使用
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>
这不是有效的JSON
firstpost.md
中有一个不允许的点。它是有效的,因为它在“
@Sheikheera不,不是引号中的那个,上面的那个@李泰勒,这是有效的。选中json,只需在json数据URL
框中粘贴,然后单击process
@sheikheera是,这是有效的。但是上面的JSON是无效的。我在评论上面提供的JSON。这不是有效的JSONfirstpost.md
中有一个不允许的点。它是有效的,因为它在“
@Sheikheera不,不是引号中的那个,上面的那个@李泰勒,这是有效的。选中json,只需在json数据URL
框中粘贴,然后单击process
@sheikheera是,这是有效的。但是上面的JSON是无效的。我是在评论上面提供的JSON。你认为你可以在JSON中有一个名为firstpost.md
的键吗?@LeeTaylor是的,但只带引号。api调用的json响应是正确的:OK。那么为什么OP删除了提供的JSON的引号?!非常奇怪!好吧,我为此道歉。我使用一个Chrome插件为我显示JSON,它会自动删除引号。我检查了“原始”JSON,它确实带有引号。再次抱歉,您认为可以在JSON中使用名为firstpost.md
的键吗?@leetylor是的,但只能使用引号。api调用的json响应是正确的:OK。那么为什么OP删除了提供的JSON的引号?!非常奇怪!好吧,我为此道歉。我使用一个Chrome插件为我显示JSON,它会自动删除引号。我检查了“原始”JSON,它确实带有引号。再次抱歉