首页 >后端开发 >php教程 >如何在PHP中正确读取和解析JSON POST数据?

如何在PHP中正确读取和解析JSON POST数据?

DDD
DDD原创
2024-12-15 20:11:12940浏览

How to Correctly Read and Parse JSON POST Data in PHP?

在 PHP 中读取 JSON POST 数据

当接收 JSON 格式的 POST 数据时,在 PHP 中正确检索和解析它至关重要。在您的场景中,您遇到了由于 JSON POST 数据处理不正确而导致的问题。

要解决此问题,请将 $_POST 的使用替换为其他方法来读取原始输入,然后将其解码为 JSON。以下是实现此目的的方法:

在接收页面上修改 PHP:

$inputJSON = file_get_contents('php://input');
$input = json_decode($inputJSON, TRUE);

此代码将原始输入读取为 JSON,然后将其解析为数组您可以通过 $input 访问。

更新了 CURL 代码测试:

如响应中所述,CURLOPT_POSTFIELDS 应与 JSON 编码字符串一起使用以进行 JSON 通信。下面是修改后的代码:

$data_string = json_encode($data);

$curl = curl_init('http://webservice.local/');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string)
));
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($curl);
$result = json_decode($result);
var_dump($result);

此代码正确设置 HTTP 标头以指示 JSON 内容,并在将数据发送为 JSON 之前对数据进行编码。

附加说明:

必须确保 header('Content-type: application/json');该行仅在您的网络服务页面上出现一次。如果多次调用,可能会导致发送正确的标头信息时出现问题。

以上是如何在PHP中正确读取和解析JSON POST数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn