​原文​

module combinejsonv3;

import std.file;
import std.stdio;
import std.json;
import std.array;
import std.algorithm.searching;

void main()
{
// 保存位置
JSONValue jsonResult;
jsonResult.array = [];

foreach (string filename; dirEntries(".", "*.json", SpanMode.shallow))
{
// 包含输出,忽略
if(canFind(filename, "output")) {
std.stdio.writeln("ignoring: " ~ filename);
continue;
}

// 按串读
string content = std.file.readText(filename);

// 按JSON解析
JSONValue j = parseJSON(content);

// 数组,则合并
if(j.type == JSONType.array) {
// 显示状态
std.stdio.writeln("processing JSON array from: " ~ filename);
jsonResult.array ~= j.array;
}
}

// 写至文件.
std.file.write("output-combined.json", jsonResult.toPrettyString);
}

可这样:

import std.stdio :;

不与​​std.file​​​冲突.
或这样:

import std;

void main() {
dirEntries(".", "*.json", SpanMode.shallow)
.filter!(f => !f.name.canFind("output"))
.map!(readText)
.map!(parseJSON)
.fold!((result, json) { result ~= json.array; return result; })
.toPrettyString
.reverseArgs!(std.file.write)("output-combined.json");
}