You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Gulp将多个JSON文件合并为单个JSON数组文件的实现方法

用Gulp合并多个JSON对象为一个JSON数组

没问题,我刚好做过类似的需求,用Gulp实现这个完全不在话下,咱们分两种方案来实现,你可以根据自己的需求选:

方案一:自定义流处理(更灵活)

这种方式不需要额外的专用插件,用through2就能搞定,适合需要自定义逻辑的场景(比如过滤特定文件、处理解析错误)。

步骤1:安装依赖

首先确保你已经初始化了项目,然后安装需要的包:

npm install gulp through2 --save-dev

步骤2:编写Gulp任务

在项目根目录创建gulpfile.js,写入以下代码:

const gulp = require('gulp');
const through = require('through2');
const fs = require('fs');

// 定义合并JSON的任务
gulp.task('merge-json', function() {
  // 用来存储所有JSON对象的数组
  const jsonCollection = [];

  return gulp.src('src/*.json') // 匹配src目录下所有JSON文件
    .pipe(through.obj(function(file, encoding, callback) {
      if (file.isBuffer()) {
        try {
          // 解析当前文件的JSON内容
          const jsonData = JSON.parse(file.contents.toString());
          // 将解析后的对象推入数组
          jsonCollection.push(jsonData);
        } catch (error) {
          // 捕获解析错误,避免任务崩溃
          console.error(`⚠️  解析文件 ${file.path} 时出错:`, error.message);
        }
      }
      callback();
    }))
    .on('end', function() {
      // 所有文件处理完成后,将数组写入目标文件
      fs.writeFileSync('dist/merged.json', JSON.stringify(jsonCollection, null, 2));
      console.log('✅ JSON文件合并完成!输出路径:dist/merged.json');
    });
});

// 可选:设置默认任务,直接执行gulp即可触发合并
gulp.task('default', gulp.series('merge-json'));

方案二:使用专用插件(更简洁)

如果你的需求很简单,不需要自定义逻辑,可以用gulp-json-concat插件来快速实现。

步骤1:安装依赖

npm install gulp gulp-json-concat --save-dev

步骤2:编写Gulp任务

const gulp = require('gulp');
const jsonConcat = require('gulp-json-concat');

gulp.task('merge-json', function() {
  return gulp.src('src/*.json')
    .pipe(jsonConcat('merged.json', function(data) {
      // data是一个键值对对象,键是文件名(不含后缀),值是对应JSON内容
      // 我们提取所有值组成数组,再转成格式化的JSON字符串
      return JSON.stringify(Object.values(data), null, 2);
    }))
    .pipe(gulp.dest('dist'));
});

// 同样可以设置默认任务
gulp.task('default', gulp.series('merge-json'));

注意事项

  • 确保所有源JSON文件都是有效的JSON对象,否则会触发解析错误(方案一已经加了错误捕获,不会导致任务崩溃)
  • JSON.stringify的第三个参数2是用来格式化输出的,让生成的JSON文件更易读,如果不需要格式化可以去掉
  • 可以根据自己的需求调整源文件路径(比如src/**/*.json匹配所有子目录下的JSON文件)和输出路径

内容的提问来源于stack exchange,提问作者ofir fridman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:41:38