1

我有一个 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()工作?

4

1 回答 1

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);
于 2012-10-29T08:30:30.480 回答