重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
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-标准的数据类型。
对于json,PHP有对应的方法进行操作。
一般而言,json会以字符串形式传给PHP脚本,一般都是放在$_POST里面,
14
?php
// 接收
$json_parameter = $_POST['json_str'];
// 处理, 变成数组
$array = json_decode($json_parameter);
// PHP 把数组数据变成json格式字符串,发给页面
$demo = array(
'key' = 'value',
'key2' = 'value2'
);
$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}
echo $demo_json;
function
ch_json_encode($data)
{
function
ch_urlencode($data)
{
if
(is_array($data)
||
is_object($data))
{
foreach
($data
as
$k
=
$v)
{
if
(is_scalar($v))
{
if
(is_array($data))
{
$data[$k]
=
urlencode($v);
}
elseif
(is_object($data))
{
$data-$k
=urlencode($v);
}
}
elseif
(is_array($data))
{
$data[$k]
=
ch_urlencode($v);//递归调用该函数
}
elseif
(is_object($data))
{
$data-$k
=
ch_urlencode($v);
}
}
}
return$data;
}
$ret
=
ch_urlencode($data);
$ret
=json_encode($ret);
return
urldecode($ret);
}
这个函数对中文支持的好一点,把数组生成json格式,再echo出来
PHP直接的函数获取或生成
用php生成json格式:json_encode('内容');
用php读取json数据:json_deconde('json数据');
1、获取要接受的json对象。
2、准备一个实体类接受json对象。
3、第一步的json对象复制到剪切板。
4、可以看出RootObject中的user_List[]数组包含User_List类使用使用代码接受对象代码。
首先你提问的问题描述不够清楚,我就当你用php去访问其他网站的接口,返回的是api数据
使用php的curl相关函数去访问(不同接口不同的请求验证或者直接get)
使用php内置函数json_decode()解析并处理返回数据