Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当keyname未知时,无法访问JSON中的元素_Javascript_Json - Fatal编程技术网

Javascript 当keyname未知时,无法访问JSON中的元素

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"

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

可以在此处找到一个示例结果:。我还复制了以下数据的缩短版本

{
  ...
  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。这不是有效的JSON
firstpost.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,它确实带有引号。再次抱歉