如果我有一个Javascript对象,从JSON解析,它嵌套了三个深,我不知道中间的密钥,如何访问它及其内容?
我正在使用的实际数据来自Github API。对于这个例子,我想要所有我的要点的文件名。
[
{
"url": "https://api.github.com/gists/11164200",
"forks_url": "https://api.github.com/gists/11164200/forks",
"commits_url": "https://api.github.com/gists/11164200/commits",
"id": "11164200",
"git_pull_url": "https://gist.github.com/11164200.git",
"git_push_url": "https://gist.github.com/11164200.git",
"html_url": "https://gist.github.com/11164200",
"files": {
"testing.md": {
"filename": "testing.md",
"type": "text/plain",
"language": "Markdown",
"raw_url": "https://gist.githubusercontent.com/omphalosskeptic/11164200/raw/3582779a4925ea514382cedb7d077d00c231f3eb/testing.md",
"size": 4254
}
}, // [ ... continues]
我的Javascript技能很简陋。通常情况下,我可以通过足够的研究找到我正在寻找的东西但不是这次。最初我预计它会像:responseObj[0].files[0].filename
。
如果可能的话,我想保留这个简单的Javascript。
谢谢!
答案 0 :(得分:2)
根据您发布的示例,files
属性不是数组,因此索引器无法访问。在这种情况下,您可以使用for-in
循环而非常规for
循环。
for(var p in responseObj[0].files) {
if ( responseObj[0].files.hasOwnProperty (p) ) {
p; // p is your unknown property name
responseObj[0].files[p]; // is the object which you can use to access
// its own properties (filename, type, etc)
}
}
hasOwnProperty
检查将跳过toString
之类的自动成员,并仅返回在对象上手动定义的成员。
答案 1 :(得分:0)
如果要迭代它们,请执行类似
的操作for (var fileID in responseObj[0].files) {
var file = responseObj[0].files[fileID];
var filename = file.filename;
}