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

如何合并两个JSON文件?新手求助指定文件路径问题

解决JSON文件合并及路径指定问题

原代码的问题

  • 直接用json_decode($filename, true)是错误的,json_decode需要传入文件内容而非文件名,得先通过file_get_contents($filename)读取文件内容
  • $data[]的写法会导致每次循环都往数组里追加元素,合并时会出现不必要的嵌套
  • glob("*.json")会遍历当前目录所有JSON文件,若你只需要合并指定的两个,得明确指定文件路径

修正后的代码

情况1:合并指定的两个JSON文件

function mergeJson() 
{
    // 手动指定要合并的文件路径,支持相对/绝对路径
    $filePaths = [
        'file1.json', // 当前脚本同目录的文件
        '../docs/file2.json' // 示例:上级目录docs文件夹下的file2.json
    ];
    
    $mergedData = [];
    foreach ($filePaths as $path) {
        // 读取文件内容
        $content = file_get_contents($path);
        // 解析JSON为关联数组
        $jsonData = json_decode($content, true);
        // 仅当解析结果为有效数组时才合并
        if (is_array($jsonData)) {
            $mergedData = array_merge($mergedData, $jsonData);
        }
    }
    
    // 生成合并后的JSON文件
    file_put_contents('merged.json', json_encode($mergedData, JSON_PRETTY_PRINT));
}

// 调用函数执行合并
mergeJson();

情况2:合并指定目录下的所有JSON文件

function mergeJson() 
{
    // 指定目标目录,比如当前脚本所在目录下的json_files文件夹
    $targetDir = 'json_files/';
    // 匹配该目录下所有JSON文件
    $filePaths = glob($targetDir . '*.json');
    
    $mergedData = [];
    foreach ($filePaths as $path) {
        $content = file_get_contents($path);
        $jsonData = json_decode($content, true);
        if (is_array($jsonData)) {
            $mergedData = array_merge($mergedData, $jsonData);
        }
    }
    
    file_put_contents('merged.json', json_encode($mergedData, JSON_PRETTY_PRINT));
}

mergeJson();

路径说明

  • 相对路径:以当前PHP脚本所在位置为基准,比如'file.json'是脚本同目录文件,'../file.json'是上级目录文件,'subdir/file.json'是脚本所在目录下subdir子文件夹里的文件
  • 绝对路径:直接写完整路径,比如Windows的'C:/projects/json/file.json',Linux的'/var/www/json/file.json',这种方式路径指向明确,不容易出错

注意事项

  • 确保PHP脚本有读取源JSON文件和写入合并后文件的权限
  • 若JSON文件格式错误,json_decode会返回null,代码里的is_array($jsonData)判断可以避免合并无效数据导致的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:01:01