天天看點

d合并json

​​原文​​

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