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 : writeln;

不与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");
}
posted @ 2022-08-02 09:04  zjh6  阅读(11)  评论(0)    收藏  举报  来源