【问题标题】:Can't read json file in laravel无法在laravel中读取json文件
【发布时间】:2021-06-19 19:43:45
【问题描述】:

我正在尝试创建一个简单的 laravel crud,在那里我将能够使用 json 文件作为数据库而不是 MySQL。但是当我尝试从位于“resource/lang”文件夹中的 json 文件中获取数据时,它返回“null”。

输出是:

Please click to view the Image

我的控制器代码:

    public function getjson(){

    $json = file_get_contents('../resources/lang/test.json');
    $gravatar = json_decode($json);
    dd($gravatar);
   }

我的 json 文件(位于 resources/lang/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",
},
]

而来自 web.php 的路由是:

Route::get('/getjson', 'App\Http\Controllers\Master@getjson');

【问题讨论】:

  • 如果你 dd($json);dd(json_last_error()) 会发生什么?
  • 对于 dd(json_last_error()),它返回 0,对于 dd($json),我得到 ` """ { "product_name": "Apple", "per_item_price": "per_item_price ", "product_quanity": "product_quanity", "total_price": "total_price", } """ `

标签: json laravel


【解决方案1】:

问题在于 test.json 中的 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"
    }
]

在总价和最后一个对象的末尾删除不需要的逗号。用于多语言目的的语言文件夹。所以我建议你使用存储文件夹来保存这个文件

用于访问存储文件storage/app/test.json

$json = \Illuminate\Support\Facades\Storage::get("test.json");
    $gravatar = json_decode($json);
    dd($gravatar);

更新 正如@shaedrich 的上述评论。

检查 JSON 错误

$json = \Illuminate\Support\Facades\Storage::get("test.json");
    $gravatar = json_decode($json);
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - No errors';
            break;
        case JSON_ERROR_DEPTH:
            echo ' - Maximum stack depth exceeded';
            break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Underflow or the modes mismatch';
            break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Unexpected control character found';
            break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error, malformed JSON';
            break;
        case JSON_ERROR_UTF8:
            echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
            break;
        default:
            echo ' - Unknown error';
            break;
    }

【讨论】:

  • 我复制粘贴了你的代码,结果还是一样...
  • 我已经测试过了。它工作正常。再次检查一次
  • 将文件添加到存储并不能修复 json 文件中的错误。我建议将文件保存在必要的文件夹中
  • 非常感谢兄弟!我错误地将我相同的缺陷 json 文件复制到存储中,而不是更正后的文件 - 抱歉
  • @azim np :) 。即使我很好奇为什么它对你不起作用。很高兴你在这里解决了你的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-04
  • 2014-09-09
  • 1970-01-01
  • 2022-01-09
  • 2016-06-01
相关资源
最近更新 更多