本文目录一览:
php怎么接收json类型数据
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!
此时可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据
查看手册,可以发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:
$_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
补充说明:PHP默认识别的数据类型是application/x-标准的数据类型。
PHP返回的JSON里含有未知字符使数据无法解析
既然你已经确定是文字编码是UTF-8格式的话
1、检查文件是否是UTF-8(不是里边的文本哦!切记)
有一个快速简单的方法,用Windows自带的记事本打开你的文件,然后另存为,如果编码类型为ANSI的话,需要改为UTF-8,然后保存,如果直接就显示的是UTF-8的话,那就跳过这步。
2、检查文件是否包含BOM头信息,找个工具检查一下,如果有的话,必须要清除。
烦,PHP接收POST过来的JSON格式数据,内含html实体,无法解析
quot;属于xml/html的字符转义方式。
php用htmlspecialchars_decode还原。
echo json_decode(htmlspecialchars_decode($_POST['data']));
没有问题