如何在 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->load->view('countries')
与写 $this->load->view('countries.php')
相同
这会在浏览器中加载视图并且不会将其存储在变量中。当我们想要加载其他类型的文件时,我们可以简单地更改扩展名。
$this->load->view('countries', $data, true);
将第三个参数传递为 true 允许我们在 variable 中存储视图。如果我们不想传递第二个参数,那么我们可以将空字符串传递为$this->load->view('countries', '', true);
【讨论】:
以上是关于如何在 CodeIgniter 控制器中读取 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章