如何在 CodeIgniter 控制器中读取 JSON 文件

Posted

技术标签:

【中文标题】如何在 CodeIgniter 控制器中读取 JSON 文件【英文标题】:How to read JSON file inside CodeIgniter Controller 【发布时间】:2019-02-01 01:19:48 【问题描述】:

我无法在 codeigniter 控制器中读取我的 json 文件,它返回错误。

我的代码:

$curYear = date("Y");
$string = file_get_contents(base_url("assets/data/".$curYear."_cal.json"));

我的控制器尝试使用以下方式读取 json 文件返回错误消息:

file_get_contents(//localhost/EBR_Labeling/assets/data/2018_cal.json):无法打开流:没有这样的文件或目录


已解决

使用这种语法:

file_get_contents("./assets/data/".$curYear."_cal.json")

【问题讨论】:

您应该将错误消息包含为文本,而不是屏幕截图。它说“没有这样的文件或目录”。 → you 如何理解该错误消息和提到的位置?为什么将base_url() 应用于路径? (顺便说一句,不再需要提及新人或寻求帮助。) 好的,我将更新描述,为什么将base_url应用于路径?我的资产/数据文件夹在我的应用程序文件夹之外,我认为这是获取我的 json 文件完整路径的唯一方法 检查此 URL 是否返回数据:localhost/EBR_Labeling/assets/data/2018_cal.json 是的,当我手动访问该文件时,它会返回我的 json 文件的内容 您需要找到资产文件夹的真实(文件系统)路径。使用//localhost/… 不是正确的语法(既不是路径也不是URL,在任何情况下都不应该触发http 子请求)。 【参考方案1】:

请使用此代码--

<?php

$json = file_get_contents(FILE_PATH);
$obj  = json_decode($json);
echo '<pre>' . print_r($obj) . '</pre>';

?>

如果您需要任何其他帮助,请告诉我。

谢谢

【讨论】:

【参考方案2】:

我们可以简单地将所有json存储在views文件夹中,并可以直接访问如下:-

<?php 
    $countries = $this->load->view('countries.json', '', true) //this will load countries.json
    $countries = json_decode($countries);
?>

注意事项:-

    $this-&gt;load-&gt;view('countries') 与写 $this-&gt;load-&gt;view('countries.php') 相同 这会在浏览器中加载视图并且不会将其存储在变量中。当我们想要加载其他类型的文件时,我们可以简单地更改扩展名。 $this-&gt;load-&gt;view('countries', $data, true); 将第三个参数传递为 true 允许我们在 variable存储视图。如果我们不想传递第二个参数,那么我们可以将空字符串传递为$this-&gt;load-&gt;view('countries', '', true);

【讨论】:

以上是关于如何在 CodeIgniter 控制器中读取 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

在codeigniter中读取数据错误

如何重定向到codeigniter中的另一个函数?

在 codeigniter 视图中放置 css

如何在 Codeigniter 4 中扩展控制器?

CodeIgniter(3.1.4)框架使用静态文件(js,css)

如何在 CodeIgniter 中使用多个控制器?