【问题标题】:How do I read all jsons in a dir, store the contents and compare the result如何读取目录中的所有 json,存储内容并比较结果
【发布时间】:2018-08-10 14:10:24
【问题描述】:

我该如何完成它?它需要读取一个目录下的所有json文件,记住内容,然后与nodejs中的一个变量进行比较。

例如共有三个json文件,存储内容并检查是否有任何内容等于“hi”。如果是,则执行某些操作,否则,执行其他操作。

我已经花了几个小时试图在谷歌上搜索类似的东西,但无济于事。

【问题讨论】:

    标签: json node.js bots discord


    【解决方案1】:

    执行以下操作的示例代码:

    • 列出目录
    • 读取目录的每个文件并存储内容
    • 过滤匹配指定目标内容的文件
    • 对每个匹配项应用一个操作

      var fs      = require("fs");
      var async   = require("async");
      
      
      var folder = __dirname+"/yolo"
      var target = "hi";
      
      var myAction = function(file, content)
      {
          console.log("My action");
          console.log(file);
          console.log(content);
      };
      
      fs.readdir(folder, function(err, item){
      
      if(err)
      {
          // do stg
          console.log("error readdir");
          console.log(err);
          process.exit(0);
      }
      else
      {
          var content = [];
      
          async.eachOf(item, function(e, i, ecb){
      
              fs.readFile(folder+"/"+e, "utf8", function(err, data){
      
                  if(err || !data)
                  {
                      console.log("error readFile");
                      console.log(err);
                      return ecb(err || true);
                  }
                  else
                  {
                      content.push({
                          file:e,
                          text: data.toString()
                      });
                      return ecb(null);
                  }
              })
          }, function(err){
              if(err)
              {
                  // do stg
                  console.log("error eachOf");
                  console.log(err);
                  process.exit(0);
              }
              else
              {
                  // get only item matching the string
                  var filters = content.filter(function(e){return e.text == target});
      
                  // call actions on each matching item
                  filters.forEach(function(e){
                      myAction(e.file, e.text);
                  });
      
                  process.exit(1);
              }
          });
      }
      });
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      • 2016-11-14
      • 2015-03-01
      • 1970-01-01
      相关资源
      最近更新 更多