Heim  >  Artikel  >  Backend-Entwicklung  >  怎样使用php获取复杂json数据并输出

怎样使用php获取复杂json数据并输出

WBOY
WBOYOriginal
2016-06-23 13:38:491241Durchsuche

这是调用多客服查看当前在线客服时的微信api

返回数据示例(正确时的JSON返回结果):

{    "kf_online_list": [        {            "kf_account": "test1@test",            "status": 1,            "kf_id": "1001",            "auto_accept": 0,            "accepted_case": 1        },        {            "kf_account": "test2@test",            "status": 1,            "kf_id": "1002",            "auto_accept": 0,            "accepted_case": 2        }    ]}


以下是我的代码:

$url_online ="https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token={$access_token}";$output_online=file_get_contents($url_online);$jsonStr = json_decode($output_online,true);//读取信息:$content = "客服1:".$jsonStr["kf_online_list"]["kf_account"]."\n在线状态:".$jsonStr["kf_online_list"]["status"]."\n正在接待人数:".$jsonStr["kf_online_list"]["accepted_case"]."\n\n客服2:".$jsonStr["kf_online_list"]["kf_account"]."\n在线状态:".$jsonStr["kf_online_list"]["status"]."\n正在接待人数:".$jsonStr["kf_online_list"]["accepted_case"];?>


我本是希望获得所有的kf_account数据,并返回到微信回话界面,可是这结构有点复杂,还有相同的字段。。。
目前还查询不到结果,我估计是最后获取json的数组写的不对,希望大家帮忙!


回复讨论(解决方案)

file_get_contents对https使用貌似有个警告,你需要打开display errors才能看到
这种问题一步步var_dump上一个变量就可以确定位置了

额知道为啥了,在$

jsonStr["kf_online_list"]["kf_account"]
那两个【】【】中间加上[0]=>
jsonStr["kf_online_list"][0]["kf_account"]
就行了,搜了一晚上啊。。

print_r($data);

看看decode後的????,就不容易?了。

二维数组当做一维访问,当然就不行啦

$status=array('0'=>'不在线','1'=>'电脑在线','2'=>'手机在线','3'=>'电脑手机在线');//$onlinestatus=$jsonStr["kf_online_list"][0]["status"];foreach ($jsonStr['kf_online_list'] as $list){	foreach ($list[kf_account] as $account)	{		foreach ($list[status] as $onlinestatus)		{			$statusStr0=$status[$onlinestatus];			foreach ($list[accepted_case] as $jiedai)			{				$content.="客服:".$account."\n在线状态:"."$statusStr0"."\n正在接待人数:"."$jiedai"."\n\n";			}		}	}}

这是我又写的代码,在foreach ($list[kf_account] as $account)这一行出错了
错误:Invalid argument supplied for foreach() ,这又怎么改呢亲们?

干脆用for循环得了。。

$s =<<< JSON{    "kf_online_list": [        {            "kf_account": "test1@test",            "status": 1,            "kf_id": "1001",            "auto_accept": 0,            "accepted_case": 1        },        {            "kf_account": "test2@test",            "status": 1,            "kf_id": "1002",            "auto_accept": 0,            "accepted_case": 2        }    ]}JSON;$jsonStr = json_decode($s, true);$content = '';foreach($jsonStr['kf_online_list'] as $i=>$item) {  $n = $i + 1;  $content .= "客服{$n}:$item[kf_account]在线状态:$item[status]正在接待人数:$item[accepted_case]";}echo $content;
客服1:test1@test在线状态:1正在接待人数:1客服2:test2@test在线状态:1正在接待人数:2

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn