读取文件夹中的所有JSON并获取其字符串

贝尼姆斯

有一个包含很多JSON文件的文件夹,并且所有文件都有一个名为"name"I的对象,我想获取其字符串并将其转换为这样的字符串

name0=UsernameExample;name1=Flowers;name2=Test; ...

名称后的数字是json的索引/计数,例如它的名称48,第48个json。到目前为止,我仅尝试从文件夹中读取JSON,但我当然失败

let s = "";
  fs.readdir('/tmp/userdb/', (files) => {
  files.each(file => {
    name = file[file.keys()[0]]; 
  })})

我已经可以转换了

var other_users = (serialize({
      "sid0": 0,
      "name0": "user1",
      "pays0": "8521",
      "avatar0": "357",
      "onlinescore0": "50"
    }));

对此:

sid0=0;name0=user1;pays0=8521;avatar0=357;onlinescore0=50

用这个const

const serialize = obj =>
  Object.entries(obj).map(([k, v]) => `${k}=${v}`).join(';')

我想通过这种方式将结果发送给用户

if (req.query.d === 'getRandomPlayers') {
    
    var sessionid = req.body.player_sid
    let user = require("./tmp/userdb/" + sessionid + ".json")
    
    var current_user = (serialize({
      player_name: user.name
    }));
      
    res.send("method_id=1665;" + current_user);
  }

这应该res.send("method_id=1665;" + current_user + thefinalresult); thefinalresult是这一切应该去的。current_user其他东西与此问题无关。

goto1

假设其中的示例JSON文件/tmp/userdb/具有以下结构,

{
  "53874745": {
    "avatar": "372",
    "name": "BILLY",
    "onlinescore": "1",
    "pays": "8758"
  }
}

您可以执行以下操作:

const { promisify } = require("util");
const fs = require("fs");
const path = require("path");

const readdir = promisify(fs.readdir);
const readFile = promisify(fs.readFile);

async function process(excludedSessionId) {
  try {
    const entries = [];

    // get a list of all `JSON` files
    const jsonFiles = await readdir(
      path.join(__dirname, "./tmp/userdb/")
    ).then(
      (files) => files.filter(
        (file) => path.extname(file) === ".json" && !file.includes(excludedSessionId)
      )
    );

    // iterate through a list of all `JSON` files & read their content
    for (const [index, file] of jsonFiles.entries()) {
      const content = await readFile(
        path.join(__dirname, "./tmp/userdb/", file)
      ).then(JSON.parse);

      // create an object for a new entry
      const key = `sid${index}`;
      const keyValue = Object.keys(content)[0];

      // use the `spread syntax` to include the rest of the
      // properties in a new entry 
      const entry = {
        [key]: keyValue,
        ...content[keyValue],
      };

      entries.push(entry);
    }

    console.log(entries[0]);
    // { 
    //    sid0: '53874745', 
    //    avatar: '372', 
    //    name: 'BILLY', 
    //    onlinescore: '1', 
    //    pays: '8758'
    //  }

    const result = entries.map((entry) => serialize(entry)).join(";");

    console.log(result);
    // sid0=53874745;avatar=372;name=BILLY;onlinescore=1;pays=8758;
    // sid1=154261758;avatar=480;name=JESSEY;onlinescore=30;pays=8521;

    return result;
  } catch (error) {
    console.error(error);
    throw error;
  }
}
process("154261742");

然后,如果要在路由控制器的回调中使用此函数,则可以执行以下操作:

app.get("/user", (req, res) => {
  // ...
  const excludedSessionId = req.body.player_sid;

  process(excludedSessionId)
    .then(result => {
      res.send(result);
    })
    .catch(error => {
      res.status(500).send("Something went wrong.");
    });
});

参考文献:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在文件夹中的所有文件中搜索字符串

Powershell更新所有子文件夹中每个文件中的字符串

在文件夹中的所有文件中搜索大量字符串

将包含字符串的所有文件从多个子文件夹移动到父文件夹中

在文件夹及其子文件夹内的所有文件中搜索字符串的vba

替换文件夹中所有文件中的字符串

如何获得否。与文件夹中所有文件中的字符串匹配的行数

重命名文件夹中的所有文件,删除重复的字符串部分

用powershell替换文件夹中所有文件中的字符串

Powershell替换文件夹中所有文件中的字符串

如何替换文件夹中Word文档中所有出现的字符串

在文件夹及其所有子文件夹的所有文件中搜索并替换另一个子字符串

如何获取文件夹中的所有文件并在python中获取其MD5哈希?

如何删除文件名中包含特定字符串的文件夹和所有子文件夹中的文件?

获取其中的所有子文件夹名称和所有html文件

批处理文件以搜索文件夹中的所有.csv文件以查找字符串

获取其字符串属性以特定字母开头的NSArray中的所有对象

在文件夹bash中以字符串开头的所有文件名上调用脚本

Bash脚本,找到当前文件夹中包含特定字符串的所有文件

shell脚本:通过搜索文件夹中的所有文件来查找字符串?

如何在所有文件夹和文件名中替换字符串

ExcelVBA-替换指定文件夹中所有文件名中的字符串

如何使用Bash搜索路径中包含给定子字符串的所有文件/文件夹?

删除文件夹中的所有图像,但标题中带有定义字符串的图像除外?

使用PySpark从名称不包含字符串的文件夹中读取文件

Javascript:从项目文件夹中读取文本文件到字符串

Bash文件夹中所有文件名中都出现字符串

如何从目录(包括其子目录)中获取其文件名包含特定字符串的所有文件的列表

如何从文件中获取所有JSON名称并将其存储到字符串中