有没有办法将Azure表存储实体转换为JSON?将Azure表存储实体转换为JSON
PHP中的Azure实体对象有很多元数据。有没有一种很好的方法来清除它,并返回一个只包含相关数据的JSON对象。
实体对象打印这样的事情
WindowsAzure\Table\Models\Entity Object
(
[_etag:WindowsAzure\Table\Models\Entity:private] => W/"datetime'2013-10-07T04%3A19%3A37.0155205Z'"
[_properties:WindowsAzure\Table\Models\Entity:private] => Array
(
[PartitionKey] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] =>
[_value:WindowsAzure\Table\Models\Property:private] => weather
)
[RowKey] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] =>
[_value:WindowsAzure\Table\Models\Property:private] => 0d625293-ef40-492b-bf07-d2889597a8f4
)
[Timestamp] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] => Edm.DateTime
[_value:WindowsAzure\Table\Models\Property:private] => DateTime Object
(
[date] => 2013-10-07 04:19:37
[timezone_type] => 3
[timezone] => UTC
)
)
[type] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] => Edm.Int32
[_value:WindowsAzure\Table\Models\Property:private] => 1
)
[city] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] =>
[_value:WindowsAzure\Table\Models\Property:private] => Pune
)
[temperature] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] => Edm.Int32
[_value:WindowsAzure\Table\Models\Property:private] => 34.7
)
[localTime] => WindowsAzure\Table\Models\Property Object
(
[_edmType:WindowsAzure\Table\Models\Property:private] =>
[_value:WindowsAzure\Table\Models\Property:private] => 2013-10-07T04:19:31.724Z
)
)
)
我想有一个干净的JSON输出这样的事情
{
PartitionKey:"weather",
RowKey: "0d625293-ef40-492b-bf07-d2889597a8f4",
Timestamp: "2013-10-07 04:19:37"
type: 1,
city: "Pune",
tempterature: 34.7
localTime: "2013-10-07T04:19:31.724Z"
}
我实现了一个循环来实现这一目标。我不确定这是否是最好的方法。
$entities = $result->getEntities();
$jsonArray = array();
for ($i = 0; $i < count($entities); $i++) {
$arr = $entities[$i]->getProperties();
$tempArr = array();
foreach ($arr as $key => $value) {
if(gettype($entities[$i]->getPropertyValue($key)) != 'object'){
$tempArr[$key] = (string)$entities[$i]->getPropertyValue($key); }
else
{
$tempArr[$key] = serialize($entities[$i]->getPropertyValue($key));
}
}
array_push($jsonArray, $tempArr);
}
echo json_encode($jsonArray);
不确定你的意思是“PHP中的Azure实体对象有很多元数据”。你可以解释吗?此外,由于Azure表存储是无模式设计,因此不存在空属性。 –
更新了问题。 –
他意味着Azure实体对象有很多信息超出预期的数据。而且这个对象没有很好的文档记载,这样一个局外人无法提出合理的理解,而没有提出让他对那些知情者有些愚蠢的问题 –