我有以下deocoded JSON数组。 我需要访问"类型"在上下文中,我需要循环遍历有效负载中的每个值。我该怎么做?
{
"RequestHeader":
{
"mess": "am putting it on my wall....",
"created_time": "2010-08-24T09:01:25+0000"
},
"context" :
{
"type": "friends,circles"
}
"payload" [ {12345},{12345} ,{2345} ]
}
我尝试了以下内容,但它不起作用
$decoded = json_decode($json_string);
for ($i=0;$i<payload.length;++$i)
{
$id=$decoded->payload[$i];
//do some operation with the id
}
答案 0 :(得分:0)
首先,您提供的JSON无效。据说有效的应该是这样的
{
"RequestHeader": {
"mess": "am putting it on my wall....",
"created_time": "2010-08-24T09:01:25+0000"
},
"context": {
"type": "friends,circles"
},
"payload": [
12345,
12345,
2345
]
}
在您使用JSON提供程序修复问题后,访问数据非常容易
<?php
$json = <<<'JSON'
{
"RequestHeader": {
"mess": "am putting it on my wall....",
"created_time": "2010-08-24T09:01:25+0000"
},
"context": {
"type": "friends,circles"
},
"payload": [
12345,
12345,
2345
]
}
JSON;
$data = json_decode($json, true);
$type = $data['context']['type'];
var_dump($type);
foreach($data['payload'] as $id) {
var_dump($id);
}
请务必确保在访问数据之前检查数据是否确实存在,例如isset($data['context']['type'])
除非你完全确定它的完整性。
答案 1 :(得分:-1)
使用json_decode方法时,输出将是嵌套数组 因此,例如,要访问上下文类型,您需要执行以下操作
echo $decoded["context"]["type"];
要循环使用有效负载,您需要执行以下操作
for ($i=0;$i<$decoded["payload"].length;++$i)
{
$id=$decoded["payload"][$i];
//do some operation with the id
}