php - 如何将 php 文件中的 Json 数据解码为另一个 php 文件?
问题描述
我是创建 API 的新手,我创建了 2 个 files.php 1- API_ReadAll.php(它是一个 API 代码,执行后将返回 Json 结果)
示例 执行以下链接: http://localhost:8080/To%20work%20on/API_FUNCTIONS/API_ReadAll.php
输出: 状态数据记录:
[
{
STATUS_ID: "14",
STATUS_CODE: "AP 2013",
STATUS_DESCRIPTION: "Amazing wheel"
}, {
STATUS_ID: "13",
STATUS_CODE: "AP55.0",
STATUS_DESCRIPTION: "A23 Powder"
}, {
STATUS_ID: "16",
STATUS_CODE: "AP525.0",
STATUS_DESCRIPTION: "Power Drink"
}
]
2- Index.php(它是一个由 HTML 元素和表格组成的 php 文件,用于显示从上面的页面检索到的数据)
我试图做以下事情:
// path to your JSON file
$url = 'http://localhost:8080/To%20work%20on/API_FUNCTIONS/API_ReadAll.php';
$json = file_get_contents($url);
$data = json_decode($json,true);
echo $data->STATUS_ID;
foreach($data As $display){
echo $display->STATUS_ID."<br>";
echo $display->STATUS_CODE."<br>";
echo $display->STATUS_DESCRIPTION."<br>";
}
输出:
Warning: file_get_contents( http://localhost:8080/To%20work%20on/API_FUNCTIONS/API_ReadAll.php): failed to open stream: No such file or directory in C:\xampp\htdocs\To work on\Temp-Builder\SEED_STATUS.PHP on line 122
Notice: Trying to get property 'STATUS_ID' of non-object in C:\xampp\htdocs\To work on\Temp-Builder\SEED_STATUS.PHP on line 125
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\To work on\Temp-Builder\SEED_STATUS.PHP on line 125
问题: 如何在 Index.php 中获取和获取上述 Json。
解决方案
我首先建议您通读以下指南create simple rest api with php(或您选择的任何其他教程),以进入使用 php 的 REST API 领域。
您可以使用 curl 对它们执行请求,而不是将 api 端点作为文件处理。然后可以使用 php 内置的 json_decode 函数将该请求的结果解码为 json。
为了让您有一个起点,我将您的方法应用于php.net上的 curl 示例:
// define api endpoint
$url = 'http://localhost:8080/To%20work%20on/API_FUNCTIONS/API_ReadAll.php';
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
$json_obj = json_decode($output)
我还注意到,您将“true”作为第二个参数传递给json_decode()
. 这样,您将收到一个关联数组而不是一个对象。但是在您的示例中,您将其视为对象。
还要注意localhost只能在本地网络中访问。因此,如果这是您的意图,这里的社区无法访问您的示例。
祝你好运
-------------------------------------------------- ----------------------
感谢您的时间:
关于您提供给我的链接,以了解有关如何构建 API 的更多信息。我确实从该链接中学习并构建了我的 API,并且我成功地实现了我正在寻找的东西。
其次,关于代码,链接的注释是的,肯定它只能从本地服务访问,我只是这样发布,试图弄清楚这是否是正确的方式。
关于代码,我刚刚尝试了您的代码,但仍然无法显示以下错误:
注意:试图在 C:\xampp\htdocs\To work on\Temp-Builder\INDEX.PHP 中获取非对象的属性 'STATUS_CODE' ....
代码:
// define api endpoint
$url = 'http://localhost:8080/To%20work%20on/Temp-Builder/API_FUNCTIONS/API_ReadAllSeed_Status.php';
// create curl resource
$ch = curl_init();
// set url
curl_setopt($ch, CURLOPT_URL, $url);
//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
$json_obj = json_decode($output);
foreach ($json_obj as $display){
echo $display->STATUS_ID."<br>";
echo $display->STATUS_CODE."<br>";
echo $display->STATUS_DESCRIPTION."<br>";
}
推荐阅读
- nginx - 同一命名空间中有多个 Nginx Ingress 控制器?
- java - 如何从 mysql netbeans 验证用户名和密码
- hibernate - Spring数据JPA存储库saveAll不生成批量插入查询
- php - Wordpress - 用双引号包裹我的二进制文件
- python - 如何在 Python 中检测子进程的 ASAN (Address Sanitizer) 错误?
- ios - 如何将 NSlayout 约束转换为整数?
- angular - monorepo 中的ngrx“ReducerManager 没有提供者”
- angular - 角度可访问性和跳到导航链接
- spring - 在@configuration中添加一个hibernate sessionFactory的bean casues:“考虑在你的配置中定义一个名为'entityManagerFactory'的bean。”
- excel - 如何在旧版本的 Excel 中替换 TEXTJOIN()?