如何访问匿名 JSON 属性?

use*_*956 2 javascript json node.js

我有以下 JSON:

{
    "Files": {
             "Lines": {
                    "198": {
                           "firstline": "sometext"
                    }
             }
    }
}
Run Code Online (Sandbox Code Playgroud)

值“198”是动态变化的。如何在不知道以下代码中的“198”的情况下轻松访问“firstline”属性:

var schema = JSON.parse(fileContents); 
console.log(schema.Files.Lines.????.firstline);
Run Code Online (Sandbox Code Playgroud)

ben*_*tah 5

几行就可以做到:

var obj = JSON.parse(your_json);
var lines = obj.Files.Lines;
var keys = Object.keys(lines);
var keyICareAbout = keys[0];
var info  = lines[keyICareAbout];
Run Code Online (Sandbox Code Playgroud)

注意:此解决方案依赖于一些较新的 javascript 功能。要JSON在所有浏览器中工作,您需要 Douglas Crockford's json2.jsfrom here。要Object.keys在所有浏览器中工作,请使用Mozilla 的 JS 文档中的此垫片:

if(!Object.keys) Object.keys = function(o){
 if (o !== Object(o))
      throw new TypeError('Object.keys called on non-object');
 var ret=[],p;
 for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
 return ret;
}
Run Code Online (Sandbox Code Playgroud)

编辑:试试这个jsfiddle。现在更新了跨浏览器兼容性措施和动态访问数据。