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

如何使用CodeIgniter生成.json文件?

如何在CodeIgniter控制器中生成JSON文件?

我在控制器中有这段JSON编码代码:

public function loaddata(){ 
    $sql = $this->db->query('select * from e_alat_angkutan')->result(); 
    return json_encode($sql); 
}

请问如何生成.json文件?恳请帮助。


嘿,这事儿其实挺简单的!你现在的代码是直接把JSON字符串返回给请求方,要生成实际的.json文件,只需要加一段文件写入的逻辑就行。这里给你两种实用的实现方式:

方式一:生成文件并返回状态提示

修改你的控制器方法,用PHP的file_put_contents()函数把JSON数据写入文件:

public function loaddata(){ 
    // 从数据库获取数据
    $sql = $this->db->query('select * from e_alat_angkutan')->result(); 
    // 转换为格式化后的JSON字符串(JSON_PRETTY_PRINT让文件更易读)
    $jsonData = json_encode($sql, JSON_PRETTY_PRINT); 

    // 指定文件保存路径,用CodeIgniter的FCPATH常量指向项目根目录
    // 注意:要确保目标目录有写入权限!
    $filePath = FCPATH . 'data.json'; 

    // 执行写入操作并判断结果
    if(file_put_contents($filePath, $jsonData)){
        return "JSON文件已成功生成,路径:".$filePath;
    } else {
        return "生成失败,请检查目录写入权限!";
    }
}

方式二:生成文件同时返回JSON内容

如果需要既生成本地文件,又给前端返回JSON数据,可以这么写:

public function loaddata(){ 
    $sql = $this->db->query('select * from e_alat_angkutan')->result(); 
    $jsonData = json_encode($sql, JSON_PRETTY_PRINT); 

    // 写入文件
    $filePath = FCPATH . 'data.json'; 
    file_put_contents($filePath, $jsonData);

    // 设置响应头为JSON格式,返回数据给前端
    $this->output
         ->set_content_type('application/json')
         ->set_output($jsonData);
}

关键提醒:

  • FCPATH是CodeIgniter内置常量,指向项目的根目录(也就是index.php所在的位置),用它构建路径能避免手动写路径出错。
  • 务必确保目标目录有写入权限!如果是Linux服务器,可能需要给目录设置755或777权限(根据服务器安全策略调整)。
  • JSON_PRETTY_PRINT是可选参数,不加的话生成的是压缩后的单行JSON,加了之后文件格式更清晰,方便人工查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:10:06