【问题标题】:How I can change structure of multiple arrays to array objects Node.js?如何将多个数组的结构更改为数组对象 Node.js?
【发布时间】:2019-01-07 22:15:27
【问题描述】:

(变量文件包含 URL .json 文件的数组)。子目录中的一个文件包含:

[ {"name": "John"} ]

然后我得到公共文件 get.json,它包含结构中子目录中的所有文件(是的,我知道它不是有效的 JSON):

[ {"name": "John"} ]
[ {"name": "Sergei"} ]

我想在这个结构中得到这个文件:

[ {name: "John"}, {name: "Sergei"} ]

我的代码

recursive(`${dirPath}`, ['delete.json', 'put.json'], function (err, file) {

  const write = fs.createWriteStream(`${dirPath}/get.json`);

  file.forEach(item => {
    fs.createReadStream(item).pipe(write);
  })

  write.on('finish', () => {
    fs.createReadStream(`${dirPath}/get.json`).pipe(res);
  })

});

【问题讨论】:

  • [ {name: "John"}] [ {name: "Sergei"}] 不是有效的 JSON。是您的示例数据错误,还是您在问如何解析这种非标准文件格式?
  • [ {name: "John"}] [ {name: "Sergei"}] - 你声称这是 JSON ......它甚至不接近 JSON - 如果它是 JSON,它看起来像 [[ {"name": "John"}],[ {"name": "Sergei"}]][ {"name": "John"}, {"name": "Sergei"} ]
  • 是的,它不是有效的 JSON。 subbdirectory 中的一个文件包含以下代码:[ { name: "John} ],当我读取所有文件并将它们推送到新的数据时,我得到无效的 JSON。我如何在有效的数组对象中收集所有这些数组?
  • 逐行读取: 使用函数JSON.parse将每个字符串/行解析为js对象,然后获取索引0中的对象,最后将其推入数组。

标签: javascript arrays node.js data-structures javascript-objects


【解决方案1】:
const names = data.split('\n')
  .map(nameArrayString => (JSON.parse(nameArrayString)[0]))

【讨论】:

  • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
【解决方案2】:

我生命中剩下的一天完成了这项任务!

recursive(`${dirPath}`, ['delete.json', 'put.json'], function (err, file) {

  const write = fs.createWriteStream(`${dirPath}/get.json`);

  const usersArr = [];

  let readStream;

  file.forEach(item => {
    readStream = fs.createReadStream(item);
    readStream.on("data", (data) => {
      JSON.parse(data).map(item => usersArr.push(item));
    });
  })

  readStream.on("end", (data) => {
    write.write(JSON.stringify(usersArr, null, " "), () => {
      console.log('Completed');
    });

    fs.createReadStream(`${dirPath}/get.json`).pipe(res)
  });

});

【讨论】:

    猜你喜欢
    • 2018-08-16
    • 2023-02-04
    • 1970-01-01
    • 2021-12-11
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多