【发布时间】:2014-02-22 11:45:06
【问题描述】:
我从 cURL API 获取 JSON 对象,我需要递归地遍历 JSON 并打印数组的树形视图。
下面是 JSON 对象:
{"message":"OK",
"records":{"Company INC":
[{"positionName":"CEO",
"seniorName":"John Doe",
"seniorId":"1035",
"seniorSex":"male",
"child":[{"positionName":"Assistant to CEO",
"seniorName":"Jane Doe",
"seniorId":"427",
"seniorSex":"female",
"child":[{"positionName":"Assitant to assistant",
"seniorName":"James Doe",
"seniorId":"1370",
"seniorSex":"male"},
{"positionName":"2nd Assistant",
"seniorName":"Jana D. OE",
"seniorId":"1049",
"seniorSex":"female","child": ...
等等。正如你在记录部分看到的,有些人有孩子,我也需要打印出来。 这是我在对 JSON 对象进行 json_decode (true) 后使用的函数。
function recurseTree($var){
$out = '<li>';
foreach($var as $v){
if(is_array($v)){
$out .= '<ul>'.recurseTree($v).'</ul>';
}else{
$out .= $v." ";
}
}
return $out.'</li>';
}
这很好用,除了它打印来自 JSON 的所有信息,我想在一行上只打印 SeniorName 和 positionName。
我怎样才能做到这一点?
【问题讨论】:
-
使用
json_decode啊,在这种情况下,您(可能)已经使用is_array,您的情况与使用数组检索属性和跳过的任何其他代码有什么不同其他的? -
为什么不用json_decode?您必须首先将您的 json 解码为对象或数组
-
你想输出像
- "John Doe, CEO"
...- "James Doe, Assitant to assistant"
,对吗? -
我已经提到我使用json_decode之后使用该函数。 S Korolev -> 是的,这就是所需的输出