You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Postman获取JSON POST请求,PHP接收JSON数据求助

如何用PHP正确获取Postman发送的JSON请求数据

首先咱们先理清你代码里的几个问题:

  1. 直接echo数组只会显示"Array":你用echo($data)时,$data是json_decode返回的数组,PHP直接输出数组只会显示字符串"Array"——这不是错误,只是默认行为,但你看不到实际数据内容。
  2. $_REQUEST拿不到JSON数据:PHP的$_REQUEST、$_POST这些超全局变量,仅在请求是表单编码格式(application/x-www-form-urlencoded或multipart/form-data)时才会自动填充。而你发送的是JSON格式(application/json),所以$_REQUEST是空数组,echo它也只会显示"Array"。
  3. Undefined offset: 0错误:这个提示说明你可能尝试访问$data[0],但你的JSON数据不是数组格式(比如你发的是{"key":"value"}这种对象,解码后是关联数组,没有索引0),因此触发了索引不存在的错误。

正确的实现步骤

第一步:确保Postman的请求设置正确

在Postman发送请求时,务必注意这几点:

  • 请求方法选POST
  • 请求头添加Content-Type: application/json(这是关键,告诉PHP这是JSON类型的请求)
  • 请求体选择raw,格式切换为JSON,输入合法的JSON数据,比如:
    {"username":"brutal", "age":25, "hobbies":["coding", "reading"]}
    

第二步:PHP接收并解析JSON的正确代码

<?php
// 1. 获取原始的JSON请求体内容
$rawJson = file_get_contents('php://input');

// 2. 解码JSON为关联数组(第二个参数true表示返回数组,而非对象)
$decodedData = json_decode($rawJson, true);

// 3. 检查解码是否成功(如果JSON格式错误,json_decode会返回null)
if ($decodedData === null) {
    http_response_code(400); // 返回400状态码表示请求格式错误
    echo json_encode(['error' => '无效的JSON格式,请检查你的请求体']);
    exit;
}

// 4. 根据JSON结构访问具体字段
// 获取用户名
if (isset($decodedData['username'])) {
    echo "用户名:" . $decodedData['username'] . "<br>";
}

// 获取年龄
if (isset($decodedData['age'])) {
    echo "年龄:" . $decodedData['age'] . "<br>";
}

// 获取爱好数组
if (isset($decodedData['hobbies']) && is_array($decodedData['hobbies'])) {
    echo "爱好:" . implode(", ", $decodedData['hobbies']) . "<br>";
}

// 如果要查看完整数据结构,用var_dump/print_r配合<pre>让格式更清晰
echo "<pre>";
var_dump($decodedData);
echo "</pre>";
?>

关键注意事项

  • 不要用$_POST/$_REQUEST获取JSON:这些变量不会自动解析JSON请求体,必须通过file_get_contents('php://input')获取原始请求内容。
  • 必须检查解码结果:如果用户发送的JSON格式有误(比如少了括号、引号不配对),json_decode会返回null,此时访问数组会报错,所以一定要先判断。
  • 区分JSON对象和数组:如果你的JSON是数组格式(比如[{"name":"a"}, {"name":"b"}]),解码后是索引数组,这时候可以用$decodedData[0]访问第一个元素,但要先确认数组不为空(比如if (count($decodedData) > 0))。
  • 调试用var_dump/print_r:直接echo数组看不到实际内容,用var_dump可以输出数组的完整结构和所有值,配合<pre>标签能让输出更易读。

内容的提问来源于stack exchange,提问作者Brutal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:28:11