原文
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 :;
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");
}