PHP 如何接收 JSON 参数

在网站开发中,很多时候需要把前端输入的信息,比如用户填写的表单、选择的选项,打包成规范的 JSON 格式传给后端。比如一个做外卖小程序的商家,要把“订单号、餐品、配送地址”这些信息整理成 JSON 发给 PHP 后端,这时候 PHP 怎么正确接住这份数据,就成了关键的第一步。

很多新手刚接触这块时,会习惯性地用接收普通表单参数的方式来拿数据,比如用$_POST['参数名'],结果发现根本拿不到值。这是因为 JSON 参数和普通表单参数的传输方式不一样,普通表单是把数据当成键值对放在请求体里,而 JSON 是把整个数据当成一个整体字符串传输,所以得用专门的方法来解析。

PHP 如何接收 JSON 参数

第一步:先确认请求的“身份”

在拿数据之前,最好先确认前端传过来的是不是 JSON 格式的数据。很多时候后端出错,是因为前端不小心传了普通表单,或者格式写错了。可以在 PHP 里加一行简单的判断,比如用getallheaders()获取请求头,看看Content-Type是不是application/json——就像你点外卖时,先看外卖袋上的标签是不是“生鲜专属”,确认是正确的品类再处理,避免拿错。

第二步:读取 JSON 原始数据

普通表单数据是 PHP 自动解析好放进$_POST的,但 JSON 数据不会被自动解析,得手动读取请求体里的原始内容。PHP 提供了file_get_contents('php://input')这个方法,就像你拆开外卖袋,把里面的餐品倒出来检查一样,它能拿到前端传过来的一整段 JSON 字符串。举个例子,如果前端传的 JSON 是{"order_id":"12345","food":"宫保鸡丁"},用这个方法拿到的就是'{"order_id":"12345","food":"宫保鸡丁"}'。

第三步:把 JSON 字符串转成 PHP 能懂的数组

拿到原始的 JSON 字符串后,它还只是一串文本,没法直接用,得转成 PHP 里的数组或者对象。这时候要用json_decode()这个函数,它就像“翻译官”,把 JSON 的“外语”翻译成 PHP 的“母语”。比如刚才的 JSON 字符串,用json_decode($rawData, true)(第二个参数设为true是转成数组,不设的话会转成对象),就能得到这样的 PHP 数组:

`php

array(

'order_id' => '12345',

'food' => '宫保鸡丁'

);

`

如果翻译失败,比如前端传的 JSON 格式写错了,少了引号或者多了逗号,json_decode()会返回null,这时候可以用json_last_error()看看错误原因,就像翻译时遇到看不懂的单词,要查字典一样。

第四步:简单例子串起来理解

假设我们做一个简单的用户信息提交接口,前端用 fetch 传 JSON:

`javascript

fetch('/api/submit', {

method: 'POST',

headers: {'Content-Type': 'application/json'},

body: JSON.stringify({name: '小明', age: 20})

});

`

对应的 PHP 接收代码就可以这么写:

`php

// 读取原始数据

$rawJson = file_get_contents('php://input');

// 转成数组

$userData = json_decode($rawJson, true);

// 检查是否成功

if ($userData && isset($userData['name'])) {

echo "收到用户:" . $userData['name'];

} else {

echo "数据错误";

}

`

这样就能正确拿到前端传的“小明”这个名字了。

最后还要注意,实际开发中最好加数据校验,比如判断年龄是不是数字、姓名有没有特殊字符,就像你收到外卖,除了看品类对不对,还要检查餐品有没有洒漏,避免后续逻辑出错。

上一篇 Swift编程语言的核心特性与日常开发中的实用场景解析