Php 如何将.json文件转换为数组

Php 如何将.json文件转换为数组,php,json,Php,Json,对于我现在正在创建的网站,我需要将.json文件转换为PHP中的数组。 谁能帮帮我,因为我试过了,但出了点问题。你能检查一下我的代码有没有错误,或者改进一下,让它正常工作吗 function getData() { $json = ""; $file=fopen("data/data.json","r") or exit("Unable to open file!"); while (!feof($file)) { $json .= fgets($file

对于我现在正在创建的网站,我需要将.json文件转换为PHP中的数组。 谁能帮帮我,因为我试过了,但出了点问题。你能检查一下我的代码有没有错误,或者改进一下,让它正常工作吗

function getData() {
    $json = "";
    $file=fopen("data/data.json","r") or exit("Unable to open file!");
    while (!feof($file)) {
        $json .= fgets($file);
    }
    fclose($file);

    $data = json_decode($json);
    return $data;
}
.json内容的一个示例:

{
    "dashboard": {
        "title": "Dashboard",
        "href": "/dashboard",
    },
    "settings": {
        "title": "Settings",
        "href": "/settings",
    }
}
编辑1:添加了json文件内容的示例

$json = file_get_contents("data/data.json");
$data = json_decode($json,true);

第二个参数表示希望将其作为数组而不是对象(默认值)

您还应该使用json_last_error()检查json_decode()的错误

您的JSON文件无效,它在每个对象的最后一个元素后面有额外的逗号。应该是:

{
    "dashboard": {
        "title": "Dashboard",
        "href": "/dashboard"
    },
    "settings": {
        "title": "Settings",
        "href": "/settings"
    }
}

另外,当调用
json\u decode
时,您应该指定第二个参数
true
,这样您将得到一个关联数组而不是一个对象作为结果。

您可以发布一个文件内容的示例吗?您的代码看起来不错,但是
file\u get\u contents
不是比您的循环更简单吗?出了问题。你能说得更具体一点吗?@Barmar it只是不起作用,我试着访问数据,但不知怎么的,数组是空的。如果json_decode阻塞了json,它将返回“null”,但如果你看到一个空数组,我不确定是怎么回事。但是试着通过linter运行json,以确保它是有效的。