Javascript 如何在nodejs中访问json数据属性

Javascript 如何在nodejs中访问json数据属性,javascript,json,node.js,Javascript,Json,Node.js,我有一个类似于下面代码的json var jsonData = { "Config": { "AttachStderr": false, "AttachStdin": false, "AttachStdout": false, "CpuShares": 0, "Cpuset": "", "Domainname": "", "Entrypoint": null,

我有一个类似于下面代码的json

var jsonData = {
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "CpuShares": 0,
        "Cpuset": "",
        "Domainname": "",
        "Entrypoint": null,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "HOME=/root"
        ]
        "Hostname": "git",
        "WorkingDir": ""
    },
    "Created": "2015-03-03T08:59:05.735601013Z",
    "Name": "/git",
    "NetworkSettings": {
        "Ports": {
            "22/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "2008"
                }
            ],
            "80/tcp": null,
            "8006/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "9008"
                }
            ]
        }
    },
    "ResolvConfPath": "/etc/resolv.conf",
    "State": {
        "Pid": 6146,
        "Running": true,
        "StartedAt": "2015-03-03T08:59:05.829535361Z"
    }
}
正如您所看到的,任何属性都有自己的唯一名称。我的问题是:如何以这种方式访问像
Env
这样的属性
getValue(jsonData,'Env')


我的json比我上面提到的更大、更复杂

这里有一个函数,如果您不知道对象的结构,可以通过该函数递归对象以找到所需的信息。请注意,这将在找到该键的第一个实例时中断函数。这意味着,如果您有多个名为
HostIp
的密钥,它将只找到第一个密钥

function getValue(obj, key) {
    var found = null;
    var recurse = function (obj, key) {
        for (var p in obj) {
            if (p === key) {
                found = obj[p];
                break;
            }
            if (obj[p] !== null && typeof obj[p] === 'object') recurse(obj[p], key);
        }
    }
    recurse(obj, key);
    return found;
}

getValue(jsonData, 'Env'); // [ "PATH=/usr/local/sbin:/usr/local/bin…", "HOME=/root" ]
如果要查找特定密钥名的所有实例,请使用以下代码。它会将所有匹配项添加到数组中,并在拖网对象后返回该数组。这不是特别有用,因为它没有提供找到密钥的上下文,但它可能会给您一些想法

function getValue(obj, key) {
    var found = [];
    var recurse = function (obj, key) {
        for (var p in obj) {
            if (p === key) {
                found.push(obj[p]);
            }
            if (obj[p] !== null && typeof obj[p] === 'object') recurse(obj[p], key);
        }
    }
    recurse(obj, key);
    return found;
}

getValue(jsonData, 'HostPort'); // [ "2008", "9008" ]

getValue()
是你的吗?是的,先生。我想向您展示我希望您要求我们为您编写
getValue
的内容?我对此进行了搜索,但找不到任何npm包或库来执行类似的操作。我想知道是否有任何库或包可以做这样的事情。好吧,不管怎样,回答得很好。