[英]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.