javascript - 在 javascript 中解析 JSON 对象(键/值对)

标签 javascript json node.js

我试图通过编写一些测试应用程序来了解 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/

相关文章:

javascript - 本地node.js服务器和python简单http服务器有什么区别

php - 如何使用 session 变量创建 php 图像

node.js - 如何解决 Adonis 应用程序启动时的崩溃问题?

javascript - CSS 和 Javascript 垂直对齐问题

javascript - 在 React 中导入 JSON 文件

java - 如何序列化来自同一对象中两个 url 的 json 数据?

json - 较小的 JSON 格式

javascript - Sequelize : Check and add BelongsToMany (N to N) relation

javascript - d3.slider 和在时间轴上过滤的日期

javascript - Angularjs 向指令的 templateUrl 添加常量值