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

Laravel中使用JSON文件替代MySQL实现CRUD时读取JSON文件返回Null的问题求助

解决Laravel读取JSON文件返回Null的问题

我来帮你排查这个问题,你的代码里有两个关键问题导致返回null,咱们一步步解决:

1. JSON文件存在语法错误

你的JSON里有多余的尾随逗号,这是无效的JSON格式,json_decode()遇到无效JSON会直接返回null。需要去掉每个对象最后一个属性后的逗号,以及数组最后一个对象后的逗号:

修正后的test.json内容:

[
    {
        "id": 1,
        "product_name": "Apple",
        "per_item_price": "10",
        "product_quanity": "4",
        "total_price": "50"
    },
    {
        "id": 2,
        "product_name": "Apple",
        "per_item_price": "10",
        "product_quanity": "4",
        "total_price": "50"
    }
]

2. 相对路径不可靠,改用Laravel路径辅助函数

直接用../resources/lang/test.json这种相对路径很容易出错,因为Laravel的执行上下文路径可能和你预期的不一样。推荐使用Laravel内置的resource_path()辅助函数,它会自动指向项目的resources目录,保证路径绝对正确。

同时建议添加错误检查,方便快速定位问题:

修正后的控制器代码:

public function getjson(){
    // 获取JSON文件的绝对路径
    $jsonPath = resource_path('lang/test.json');
    
    // 先检查文件是否存在且可读
    if (!file_exists($jsonPath) || !is_readable($jsonPath)) {
        dd('无法读取JSON文件,请检查路径或文件权限');
    }
    
    $json = file_get_contents($jsonPath);
    // 第二个参数传true,将JSON转成关联数组(后续CRUD操作更方便)
    $data = json_decode($json, true);
    
    // 检查JSON解码是否成功
    if (json_last_error() !== JSON_ERROR_NONE) {
        dd('JSON解码失败:' . json_last_error_msg());
    }
    
    dd($data);
}

额外提示

  • 如果你需要对这个JSON文件做CRUD操作,建议封装一个简单的服务类来处理文件读写、JSON编码解码,避免重复代码。
  • 操作JSON文件时要注意文件权限,确保Laravel进程有读写该文件的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:47:35