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 @   zjh6  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示