以下情况:我尝试将2,089个JSON文件合并到一个JSON文件中。它们都位于名为“贷方”的目录中。
我尝试了几个Python脚本,但现在我想使用名为gulp-merge-json的gulp模块(现在推荐了不止一次)。
我执行gulp任务,加载时间表明它真正处理了所有2,000多个文件(与我的测试只有3个相比,有效);但我生成的文件只包含单个文件中的JSON数据。 Odder仍然(可能暗示解决方案)是使用的文件标题为999.json。这些文件都命名为x.json,其中1< x< 2,090。
我没有看到数据中突出的任何内容导致此错误。文件999似乎没有任何其他方式的例外,除了它显然具有最高的总结标题值。
够;这是代码:
gulp.src('/Users/me/Documents/lenders/*.json')
.pipe(merge('combined.json'))
.pipe(gulp.dest('/Users/me/Documents/LendersData'));
将它放在一个包含所有正确安装的依赖项的gulpfile中,它确实运行。简单地说,这个过程(假设)使用json指示的glob获取lenders目录中的所有文件,创建一个名为LendersData的目录,并将combined.json文件放入其中。
有没有人有使用这个gulp模块的经验?我不知道为什么需要花费相当多的时间来运行任务来判断我输入的输入数据量(在千兆字节范围内),然后只留下来自999.json的数据。谢谢!
编辑:我的3个JSON文件的测试不起作用。写入输出文件的1.json,2.json和3.json中唯一的文件是3.json。现在,这是一个指示,只复制脚本读取的最后一个文件。对于完整尝试的999.json,如果它们以某种方式排序,则可能是列出的最后一个文件。我以为我的glob会处理目录中的每个文件吗?
以下是合并两者的意思。假设我们有两个文件,1.json和2.json;
1.json:
{
"header":{
"total":2,"page":1,"date":"2016-08-01T17:29:57Z","page_size":1},
"lenders": [
{"lender_id":"matt","name":"Matt"}
]
}
和2.json:
{
"header":{
"total":2,"page":2,"date":"2016-08-01T17:30:57Z","page_size":1},
"lenders": [
{"lender_id":"sarah","name":"Sarah"}
]
}
合并结果:
{
"lenders": [
{"lender_id":"matt","name":"Matt"},
{"lender_id:"sarah","name":"Sarah"}
]
}
(我意识到弹出标题是一个额外的要求,但不这样做会导致无效的JSON)
答案 0 :(得分:0)
根据您的上次更新进行编辑。这应该这样做:
var gulp = require('gulp');
var combine = require('gulp-jsoncombine');
function combineFiles (files) {
var lenders = [];
for (var file in files) {
if (files.hasOwnProperty(file) && files[file].hasOwnProperty('lenders')) {
lenders.push(files[file].lenders);
}
}
var result = {lenders: [].concat.apply([], lenders)};
return new Buffer(JSON.stringify(result));
}
gulp.task('default', function () {
return gulp.src('lenders/*.json')
.pipe(combine('combined.json', combineFiles))
.pipe(gulp.dest('LendersData'));
});