将CFResponse解析为Array

时间:2012-10-28 12:04:20

标签: php arrays json

我有一个CFResponse,我想解析成这样的数组:

$response = $this->scan($query);        
$array = $response->body->Items->to_array();
print_r($array);

由于某种原因,这给了我一个空的CFArray,而

$response->body->Items->to_json();

另一方面给了我这个:

{"userID":{"S":"someemail@me.com"},"password":{"S":"secretPassword"}}

这只是第一行。 但是,这是我通过$ response-> body;

获得的
CFSimpleXML Object ( [ConsumedCapacityUnits] => 0.5 [Count] => 2 [Items] => Array ( [0] => CFSimpleXML Object ( [userID] => CFSimpleXML Object ( [S] => someemail@me.com ) [password] => CFSimpleXML Object ( [S] => secretPassword ) ) [1] => CFSimpleXML Object ( [userID] => CFSimpleXML Object ( [S] => somemoreemail@me.com ) [password] => CFSimpleXML Object ( [S] => secretPassword ) ) ) [ScannedCount] => 2 )

正如您在此处所见,Items是一个数组。它是一个SimpleXMLIterator对象。 有两行被返回。

通过调用Items,我只获得第一个对象。如何将所有子节点解​​析为数组,或者至少制作一个json字符串?我试过getChildren(),但没有用。 另外,为什么to_array()没有工作?

1 个答案:

答案 0 :(得分:1)

$query_response = $db->query(array(
        'TableName'    => $tableName,
        'HashKeyValue' => $db->attribute($peer)
));

if (!$query_response->isOK()){
    die(json_encode(CFUtilities::convert_response_to_array($query_response)));
}

$ps = array();

foreach ($query_response->body->Items as $item)
{
    if (empty($item)) continue;
    $p = array();
    $p['P'] = (string) $item->p->S;
    $p['TIME'] = (integer) $item->TIME->N;
    $p['STATUS'] = (string) $item->STATUS->S;
    $p['ICON'] = (string) $v->ICON->S;
    array_push($ps,$p);
}
echo json_encode($ps);