Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 如何以自定义方式读取JSON文件_Javascript_Json - Fatal编程技术网

Javascript 如何以自定义方式读取JSON文件

Javascript 如何以自定义方式读取JSON文件,javascript,json,Javascript,Json,我有一个JSON对象,如下所示 { "db": { "name": "db", "connector": "memory" }, "MySql": { "host": "localhost", "port": 3306, "database": "users", "username": "root", "password": "", "name": "MySql", "connector": "mysql" }, "postgreDS":

我有一个JSON对象,如下所示

{
 "db": {
 "name": "db",
 "connector": "memory"
  },
"MySql": {
   "host": "localhost",
   "port": 3306,
   "database": "users",
   "username": "root",
   "password": "",
   "name": "MySql",
   "connector": "mysql"
  },
"postgreDS": {
   "host": "localhost", 
   "port": 1234,
   "database": "abc", 
   "username": "postgres", 
   "password": "abc",
   "name": "postgreDS",
   "connector": "postgresql"
 }
我需要这个对象的以下输出

{"db", "MySql", "postgreDS"}
我应该如何从JavaScript中的整个JSON对象中提取上述信息。 以及如何读取子键和这些值。

尝试

javascript

$(function(){
var output = {};
var items = {
 "db": {
 "name": "db",
 "connector": "memory"
  },
"MySql": {
   "host": "localhost",
   "port": 3306,
   "database": "users",
   "username": "root",
   "password": "",
   "name": "MySql",
   "connector": "mysql"
  },
"postgreDS": {
   "host": "localhost", 
   "port": 1234,
   "database": "abc", 
   "username": "postgres", 
   "password": "abc",
   "name": "postgreDS",
   "connector": "postgresql"
 }};

for(var propertyName in items) {
    output.push(propertyName); // output will have the required output

}
console.log(output);
});
类似这样的内容(其中,
obj
是您的JSON对象):


如果您只是想获取嵌套对象的键,请使用
Object.keys

var keys = Object.keys(obj); // [ "db", "MySql", "postgreDS" ]
如果您希望根据指定的键从嵌套对象中获取值,这里有一个通用函数,它将返回一个值数组:

function getValueFromKey(obj, key) {
    return Object.keys(obj).map(function (el) {
        return obj[el][key];
    });
}

getValueFromKey(obj, 'name'); // [ "db", "MySql", "postgreDS" ]
getValueFromKey(obj, 'connector'); // [ "memory", "mysql", "postgresql" ]

迭代它,获取所有三个字典,从所有三个字典中提取key
name
的值。除非你在寻找现成的密码,否则我可能不知道钥匙的副本。那又怎样?您可以使用
for in
循环获取所有密钥。只要您的目标是从所有子目录中获取键
name
的所有值。或者您可以使用simple
var keys=Object.keys(字典)
来获取所有keys@RizwanHaider有一件事要说清楚!是否要显示顶级键db、mysql和postGreDS?或者,是否要在所有三个键中显示键
name
的值?
function getValueFromKey(obj, key) {
    return Object.keys(obj).map(function (el) {
        return obj[el][key];
    });
}

getValueFromKey(obj, 'name'); // [ "db", "MySql", "postgreDS" ]
getValueFromKey(obj, 'connector'); // [ "memory", "mysql", "postgresql" ]