我试图通过编写一些测试应用程序来了解 NodeJS。到目前为止我的表现还不错,但让我困惑的一件事是以下。
我已经让它读取文件夹的目录,然后解析每个文件夹中的 settings.json
文件(这样我就可以根据文件夹内容动态构建 UI)。问题是,我似乎无法使用 JSON 对象“降级”。
例如,来自 php 后台,您可以执行如下操作来“单步”遍历数组:
<?php
$arr = [
'folder1' =>
[ 'name' => 'test',
'icon' => 'icon-test'
],
'folder2' =>
[ 'name' => 'test-2',
'icon' => 'icon-test-2'
]
];
foreach($arr as $k => $v){
// folder1 level
foreach($v as $k2 => $v2){
// name / icon level.
echo $k2 . ' is ' . $v2;
}
}
?>
JS中有类似的东西吗?我可以通过这样做来完成第一个“级别”:
function getDirectories (srcpath) {
return fs.readdirSync(srcpath)
.filter(file => fs.lstatSync(path.join(srcpath, file)).isDirectory())
}
var d = getDirectories('modules');
var modules = {};
// the following reads the json in each dir into an object like:
// { 'dirname': { 'key1': 'val1', 'key2': 'val2' }, 'dirname2'... }
for(var p in d){
modules[d[p]] = JSON.parse(fs.readFileSync('./modules/'+d[p]+'/config.json', 'utf8'));
}
for(var k in modules){
console.log(k);
}
但理想情况下我需要从 JSON 中提取“名称”和“图标”。我似乎找不到任何方法来做到这一点。
我知道这可能很困惑,但我只是在了解 NodeJS。为了完全清楚起见,目录结构和我的简单 JSON 文件如下:
模块目录结构
modules
|____ test
|____ config.json
|____ test-2
|____ config.json
config.json(示例)
{
"name": "test",
"icon": "test-icon"
}
最佳答案
for(var module of modules){
console.log(module.name,module.icon);
//or over all
for(var value of module) console.log(value);
}
for...of 循环遍历值。使用 for..in (循环键):
for(var name in modules){
var module=modules[name];
for(key in module){
console.log(name+"/"+key+":"+module[key]);
}
}
关于javascript - 在 javascript 中解析 JSON 对象(键/值对),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44725316/