[英]Converting Mongo db result to JSON
我正在將Phalcon框架與MongoDB數據庫一起使用,這個項目是一個寧靜的項目,我需要每個控制器的json輸出,我在MongoDB數據庫中有一個集合,當我閱讀並將其轉換為json時,我得到的結果如下所示:
{
"_meta": {
"status": "SUCCESS",
"count": 1
},
"records": {
"_id": {
"$id": "5659c36e9dd39ed34024f9a1"
},
"name": "main",
"cities": [
{
"_id": {
"$id": "5659c36e9dd39ed34024f9a2"
},
"name": "child1"
},
{
"_id": {
"$id": "5659c36e9dd39ed34024f9bd"
},
"name": "child2"
},
{
"_id": {
"$id": "5659c36e9dd39ed34024f9be"
},
"name": "child2"
}
]
}
}
如您所見,我們有一個帶有"$id"
名稱的字段,我認為這不好,因為我在移動應用中使用了此結果,當我想將此json
解析為POJO
類。
我知道為什么我們的輸出中有“ $ id”,但是我不知道如何替換它,我不想使用str_replace
或foreach
語法,我相信Phalcon中的phalcon
或mongodb
模型應該有一個解決方案它。 解決辦法是什么?
遞歸地遍歷對象並取消設置屬性
我猜是這樣的:如果我們假設從數據庫中獲得的對象是$ result:
// Object from db
$result;
// Get only records
$records = $result->records;
// Unset undesired properties recursively
$this->iterateRecursively($records);
public function iterateRecursively($object, $properties = ['_id'])
{
foreach ($object as $key => $value){
// Unset undesired properties
foreach ($properties as $property){
if ($key === $property){
unset($object->{$property});
}
}
// Dig deeper into object
if (is_object($value)){
$this->iterateRecursively($value);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.