Rumah > pembangunan bahagian belakang > tutorial php > 怎样使用php获取复杂json数据并输出

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

WBOY
Lepaskan: 2016-06-23 13:38:49
asal
1288 orang telah melayarinya

这是调用多客服查看当前在线客服时的微信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        }    ]}
Salin selepas log masuk


以下是我的代码:

$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"];?>
Salin selepas log masuk


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


回复讨论(解决方案)

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

额知道为啥了,在$

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

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";			}		}	}}
Salin selepas log masuk

这是我又写的代码,在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;
Salin selepas log masuk
客服1:test1@test在线状态:1正在接待人数:1客服2:test2@test在线状态:1正在接待人数:2
Salin selepas log masuk

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan