You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js实现多JSON文件合并为单文件并以文件路径为键的方案咨询

JSON多文件合并实现方案

现有代码修正点

你当前代码有两处可调整:

  • 生成的jsonFullPath末尾多加了多余的.,需要删掉最后的+ '.',避免最终键名结尾出现多余点号
  • 如果你的键需要保留路径中的语言标识(比如示例中的en_US),正则可以简化为只匹配.json后缀,避免把语言标识误删

完整实现代码

const fs = require('fs');
const path = require('path');

// 配置项,替换为你实际的路径
const rootDir = './你的项目根目录'; // 计算相对路径的基准根目录
const jsonFileList = []; // 你已经遍历得到的所有JSON文件绝对路径数组
const outputPath = './merged.json'; // 合并后文件的输出路径

// 初始化合并结果对象
const mergedJson = {};

// 遍历所有JSON文件处理
jsonFileList.forEach(filePath => {
    // 生成点分隔的键名
    const keyName = path.relative(rootDir, filePath)
        .split(path.sep)
        .join('.')
        .replace(/\.json$/, '');
    // 若确实需要移除文件名中的语言后缀,可替换为你原来的正则:.replace(/(_[a-z]{2}(_[A-Z]{2})?)?\.json/, '')
    
    // 读取解析单个JSON文件
    const rawContent = fs.readFileSync(filePath, 'utf-8');
    const fileContent = JSON.parse(rawContent);
    
    // 写入合并对象
    mergedJson[keyName] = fileContent;
});

// 输出合并后的JSON文件
fs.writeFileSync(outputPath, JSON.stringify(mergedJson, null, 2), 'utf-8');

补充说明

  • JSON.stringify的第三个参数设为2是为了生成格式化的易读JSON,如果需要压缩体积可以去掉该参数
  • 如果你需要生成嵌套对象结构而非扁平化的点分隔键,可以自行加逻辑拆分keyName按层级写入,按你给出的示例需求,直接用点分隔字符串作为键即可满足要求

内容的提问来源于stack exchange,提问作者Hani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:39:00