Javascript 如何在nodejs中访问json数据属性
我有一个类似于下面代码的jsonJavascript 如何在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,
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包或库来执行类似的操作。我想知道是否有任何库或包可以做这样的事情。好吧,不管怎样,回答得很好。