我从URL中提取JSON数据并尝试显示仅显示名称的列表。
在某种程度上,如果我知道每次都会返回X量的结果,那么这将非常容易。但是,返回的结果将在0到50+之间变化。
我做了大量的搜索,所有人都说“只使用json_decode”......并非如此。
我有以下JSON:
{
"ACK": "SUCCESS",
"ERROR": null,
"AGENT": {
"has_results": 1,
"agents": [
{
"display_name": "Alex",
"time_in_state": "5214",
"state": "Aux",
"callstakentoday": null,
"callsouttoday": null,
"agntpriority": null,
"skill_num": "76"
},
{
"display_name": "Bill",
"time_in_state": "6312",
"state": "Aux",
"callstakentoday": null,
"callsouttoday": null,
"agntpriority": null,
"skill_num": "76"
},
{
"display_name": "Carrie",
"time_in_state": "5982",
"state": "Aux",
"callstakentoday": null,
"callsouttoday": null,
"agntpriority": null,
"skill_num": "76"
},
{
"display_name": "David",
"time_in_state": "4226",
"state": "Aux",
"callstakentoday": null,
"callsouttoday": null,
"agntpriority": null,
"skill_num": "76"
}
]
},
"SKILL": {
"has_results": 1,
"num_skills": 1,
"skills": [
{
"display_name": "Phone Skills",
"skill_num": "76",
"callsinqueue": "0",
"callstoday": "9",
"abandtoday": "0",
"lwt": "0",
"ewt": "0",
"servicelvl": "100",
"avgspeedans": "6",
"talktime": "289"
}
]
},
"TIME": 1383766541
}
从我读过的示例和文档中,创建了以下代码:
<?php
$url="http://myjsonurl.local";
$json = file_get_contents($url);
//echo $json;
$json = json_decode($json);
foreach($json as $item->display_name)
{
echo $item->agents->display_name;
}
?>
我的最终目标是拥有一个只有名称的列表,然后我可以在备用网页中显示这些名称。
所以我的问题是......我如何阅读这个页面并很好地格式化数据(也许我可以打印一个数组?)所以我可以在将来使用它?
答案 0 :(得分:3)
您的代码中包含以下内容:
foreach($json as $item->display_name)
这是不正确的,并没有做你想要的。通过执行print_r($json)
可以看到,名称位于$json->AGENT->agents
中,因此您需要遍历这些项目,然后使用箭头语法遍历display_name
({{1} })。获得显示名称后,可以将其推送到数组中,然后根据需要使用它。
您的循环应如下所示:
$item->display_name
输出:
$names = array(); // initialize empty array
foreach($json->AGENT->agents as $item)
{
$names[] = $item->display_name;
}
print_r($names); // see the array contents
注意:如果您事先不知道JSON对象的结构,那么您可以使用嵌套的Array
(
[0] => Alex
[1] => Bill
[2] => Carrie
[3] => David
)
循环来检索名称。
答案 1 :(得分:1)
您想要迭代的数组是$json->AGENT->agents
。此外,您的foreach
语法错误。
尝试:
foreach($json->AGENT->agents as $item)
{
echo $item->display_name;
}
答案 2 :(得分:0)
如果要将JSON数据作为数组而不是对象获取,请改用json_decode($json, true)
。这告诉函数将其作为关联数组返回,如下所示:http://php.net/manual/en/function.json-decode.php
答案 3 :(得分:0)
foreach 循环中出现错误。
foreach($json as $item->display_name)
{
echo $item->agents->display_name;
}
$ item不是对象,您实际上是在此行中尝试访问无对象的属性“display_name”($ item)
foreach($json as $item)