在JavaScript中将多个JSON文件读入对象数组

3

我有一个文件夹下有多个 JSON 文件需要读取。数据文件路径如下:

./data/json1.json
./data/json2.json

我的初始化器类的工作方式如下:

const j1 = require('./data/json1.json');
const j2 = require('./data/json2.json');
init(){
    return j1.concat(j2);
}

有没有更好的方法来处理这个问题?因为data文件夹下的文件列表可能会增加,每次都需要修改代码吗?

最好避免在init()中循环读取文件夹并将文件追加到数组对象中的解决方案。

2个回答

5
作为一种变体:
'use strict';

const fs = require('fs');
const path = require('path');

const dir = './data';

function init() {
  return fs.readdirSync(dir)
           .filter(name => path.extname(name) === '.json')
           .map(name => require(path.join(dir, name)));
}

有没有客户端的替代方案?(我正在尝试在TypeScript客户端中使用它)有没有其他选择? - infamous hvher
@infamoushvher 我认为这值得单独提出一个问题。 - vsemozhebuty

-1

你可以使用glob包。

const glob = require("glob");
const path = require("path");

glob('data/*.json', function (er, files) {
  files.forEach(function(file) {
    //Do your thing
  })
})

我们在这里使用glob吗?这只是普通的文件读取,我宁愿避免使用。 - Abhi Nandan
如果您不想再修改代码,请使用 glob 获取路径。 - sveyda
path.join 返回一个字符串,没有 forEach 方法。而且星号也无法使用。 - mcmxc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接